Pregunta

, todavía estoy confundido. Estoy de acuerdo en que se debe evitar JSTL y entender cómo se produce su evaluación en la fase equivocada. Sin embargo, por el documentación en los facelets sitio de desarrollo, parece que sólo es compatible con las etiquetas <ui:fragment> dos atributos, id y binding. Por lo tanto, incluso si algunos rendered apoyo a la ejecución, parece que sería tentar a la suerte de hacer uso de ella. La otra sugerencia era utilizar <h:panelGroup>, sin embargo, que inserta un elemento <div> en la respuesta que podría causar efectos secundarios no deseados (como cambiar su contenido desde inline a bloquear). ¿Alguien sabe una forma de evitar esto? En particular, estoy tratando lo siguiente:

<!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>

¿Qué es, básicamente, un cuadro de lista se utiliza para seleccionar un elemento con un nombre y una descripción que cuando se selecciona permitirá al usuario editar ellos. Podría poner <ice:panelGroup> alrededor de la cuadra, y utilizar el atributo prestado de ella, pero de nuevo, podría haber efectos secundarios de la inyección que div adicional. ¿Hay alguna manera de hacer este trabajo?

Además, puede valer la pena mencionar que estoy usando el componente personalizado anteriormente emparejado con esta 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>

Para me permite utilizar esto en mi XHTML JSF:

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

Solución

  

La otra sugerencia era utilizar <h:panelGroup>, sin embargo, que inserta un elemento <div> en la respuesta

El <h:panelGroup> no hacen un <div> por defecto. Sólo hace que si agrega layout="block". Para todos los demás atributos HTML (como id, styleClass, etc), sólo se hace una <span>. Si no hay ningún atributo layout está presente y todos los demás atributos HTML están ausentes, se hace no .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top