1

После прочтения this answer, я все еще в тупике. Я согласен с тем, что JSTL следует избегать и понимать, как его оценка происходит в неправильной фазе. Однако, за documentation на сайте разработки facelets, похоже, что теги <ui:fragment> поддерживают только два атрибута: id и binding. Итак, даже если какая-то поддержка поддержки rendered, похоже, вы соблазняете судьбу использовать ее. Другое предложение состояло в том, чтобы использовать <h:panelGroup>, однако вставляет в ответ элемент <div>, который может вызвать нежелательные побочные эффекты (например, изменение содержимого из строки в блок). Кто-нибудь знает об этом? В частности, я пытаюсь следующее:Facelet Custom Component - предотвратить рендеринг

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns:ice="http://www.icesoft.com/icefaces/component" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 
    <ui:composition> 
    <ice:selectOneListbox binding="#{binding}" rendered="#{modeExisting}"> 
     <f:selectItems 
     value="#{binding.allTagsSelectItems}" /> 
    </ice:selectOneListbox> 
    <ice:inputText binding="#{binding.name}" /> 
    <ice:inputText binding="#{binding.description}" /> 
    </ui:composition> 
</html> 

который является в основном ListBox используется для выбора элемента с именем и описанием, которое при выбранной позволит пользователю редактировать их. Я мог бы разместить <ice:panelGroup> вокруг блока и использовать атрибут rendered, но опять же, могут быть побочные эффекты инъекции этого дополнительного div. Есть ли способ сделать эту работу?

Кроме того, возможно, стоит отметить, что я использую выше пользовательского компонента в паре с этим facelet-TagLib:

<?xml version="1.0"?> 
<!DOCTYPE facelet-taglib PUBLIC 
"-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN" 
"http://java.sun.com/dtd/facelet-taglib_1_0.dtd"> 

<facelet-taglib> 
    <namespace>http://www.mitre.org/asias/jsf</namespace> 
    <tag> 
    <tag-name>configurationTagEditor</tag-name> 
    <source>../component/configurationTagEditor.xhtml</source> 
    </tag> 
    <tag> 
    <tag-name>configurationTagSelector</tag-name> 
    <source>../component/configurationTagSelector.xhtml</source> 
    </tag> 
    <tag> 
    <tag-name>configurationTagRegexTable</tag-name> 
    <source>../component/configurationTagRegexTable.xhtml</source> 
    </tag> 
</facelet-taglib> 

, чтобы позволить мне использовать это в моем Jsf XHTML:

... 
<ice:panelTab label="Existing" styleClass="configurationTagsExisting"> 
    <m:configurationTagEditor tag="#{configuration.existingTag}" /> 
</ice:panelTab> 
... 

ответ

0

другое предложение заключалось в том, чтобы использовать <h:panelGroup>, однако, что вставляет <div> элемента в ответ

<h:panelGroup> по умолчанию не делает <div>. Это только делает это, если вы добавите layout="block". Для всех других атрибутов HTML (например, id, styleClass и т. Д.) Он отображает только <span>. Если атрибут layout присутствует и все остальные атрибуты HTML отсутствуют, он отображает ничего.

+0

Спасибо, я не знал. Мой справочный материал был напрямую связан с Icefaces, а не с JSF, и документация на ледяные поверхности для соответствующего элемента panelGroup гласит: «Компонент panelGroup отображает элемент« div »вокруг своих дочерних компонентов, выводя значение атрибута« style »в качестве значения атрибут «style» и значение атрибута «styleClass» как значение атрибута «class». » Еще раз спасибо, я буду использовать панель JSF для этой цели. – Lucas 2010-12-03 18:59:55

 Смежные вопросы

  • Нет связанных вопросов^_^