¿Qué hace y cuándo debo usarlo?


He estado teniendo problemas con la etiqueta <f:facet>. Estoy trabajando con otros ejemplos de código que lo usan, pero no estoy seguro exactamente de qué propósito sirve.

He escrito algún código que en method es exactamente el mismo que otro código que he visto que funciona, excepto que está envuelto en una etiqueta <f:facet name=actions>. Cuando agrego esto alrededor de mi código, el cuadro desplegable que estoy envolviendo desaparece cuando lo despliego. Cualquier persona capaz de sugerir una razón para esto o darme una idea de cómo y cuándo uso faceta?

Aquí está mi código, no me molestaré en agregar el código bean, ya que son solo getters y setters básicos y no creo que estén causando el problema.

<f:facet name="actions">
    <p:selectOneMenu id="SwitchWeekDrpDwnMenu" 
                     value="#{depotWorkloadBean.selectView}"
                     partialSubmit="true">
        <p:ajax update="mainForm" 
                listener="#{depotWorkloadBean.updateView}" />
        <f:selectItem itemLabel="Day view" itemValue="Day"/>
        <f:selectItem itemLabel="01/01/2014" itemValue="Week"/>
    </p:selectOneMenu>
</f:facet>

Si elimino la etiqueta de faceta, se muestra el cuadro desplegable, pero no funciona como debería con los frijoles.

Author: ROMANIA_engineer, 2014-08-06

1 answers

Una faceta representa una sección nombrada dentro de un componente contenedor. Por ejemplo, puede crear una faceta de encabezado y pie de página para un componente DataTable. http://www.jsftoolbox.com/documentation/help/12-TagReference/core/f_facet.html

Es útil cuando se quiere crear un componente que use algún código de usuario (digamos wrapper).

Ie. cuando desea crear un componente que oculta texto largo y muestra una versión corta del mismo. Puedes usar solo el elemento cuerpo, pero luego obtendrá solo un valor, si desea obtener del usuario la versión corta y la larga, entonces no puede hacerlo en un valor (sin usar algún discriminante), solo use faceta y diga cuál es el largo y cuál es la versión corta.

<textShortener>
    <f:facet name="short">
        This text is short.
    </f:facet>
    <f:facet name="long">
        This text is too <b>long</b to be showed when page loads. User have to click the button after the short text to show this.
    </f:facet>
</textShortener>

Sí, esto puede (y debe) hacerse con plantillas jsf, pero espero que lo hayas conseguido.

A la pregunta: usted definió faceta solo en el xml salvaje, nadie lo solicitó por lo que nadie lo procesó-es por eso que no arrojó error ni mostró cualquier cosa.

 14
Author: Flowy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-10 19:50:27