tag significado hacer etiqueta ejemplos div como attribute html jsf-2 conditional-rendering

significado - html title attribute



¿Cómo condicionalmente renderizar elementos HTML simples como<div> s? (4)

El componente JSF correcto para representar un elemento HTML <div> es el <h:panelGroup> con el atributo de layout establecido en block . Entonces, esto debería hacer:

<h:panelGroup layout="block" ... rendered="#{someCondition}"> ... </h:panelGroup>

Alternativamente, envuélvalo en un <ui:fragment> :

<ui:fragment rendered="#{someCondition}"> <div> ... </div> </ui:fragment>

Tenga en cuenta que cuando desee actualizar ajax un componente condicionalmente renderizado, entonces debe ser ajax -actualizando su componente principal.

Ver también:

Estoy intentando implementar un componente compuesto que muestre los detalles de la información de un usuario en texto plano o los muestre a través de campos de texto de entrada editables si los detalles deseados son los del usuario actualmente conectado.

Sé que todos los componentes de UI se pueden representar a través del atributo representado, pero ¿qué pasa con los que no son componentes de UI (por ejemplo, divs)?

<div class = "userDetails" rendered = "#{cc.attrs.value.id != sessionController.authUser.id}"> Name: #{cc.attrs.value.name} Details: #{cc.attrs.value.details} </div> <div class = "userDetails" rendered = "#{cc.attrs.value.id == sessionController.authUser.id}"> <h:form> ... </h:form> </div>

Sé que el div no tiene el atributo renderizado y probablemente no tenga el enfoque correcto. Podría usar fácilmente una etiqueta JSTL pero quiero evitar eso.


Esto ha sido fácil desde JSF 2.2. Mediante el uso de elementos de paso, cualquier elemento HTML se puede convertir a un componente JSF, que tiene el atributo representado.

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:jsf="http://xmlns.jcp.org/jsf"> <div class="userDetails" jsf:rendered="#{cc.attrs.value.id != sessionController.authUser.id}"> Name: #{cc.attrs.value.name} Details: #{cc.attrs.value.details} </div> </html>

Lea más en https://jsflive.wordpress.com/2013/08/08/jsf22-html5/#elements


Podría usar otros componentes compuestos. No hay divs u otras etiquetas adicionales, exactamente la que necesita. Mira este ejemplo:

<table> <tr>...</tr> <my:cc rendered="false"> <tr>...</tr> </my:cc> <my:cc rendered="true"> <tr>...</tr> </my:cc> </table>

Y el componente my: cc:

<?xml version=''1.0'' encoding=''UTF-8'' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:cc="http://xmlns.jcp.org/jsf/composite"> <cc:interface> </cc:interface> <cc:implementation> <cc:insertChildren /> </cc:implementation> </html>

Produce HTML siguiente, sin etiquetas adicionales, trabajando con ajax.

<table><tr>...</tr><tr>...</tr></table>


Solo envolvería tu HTML con <h:panelGroup>

<h:panelGroup rendered = "#{cc.attrs.value.id != sessionController.authUser.id}"> <div class = "userDetails"> Name: #{cc.attrs.value.name} Details: #{cc.attrs.value.details} </div> </h:panelGroup> <h:panelGroup rendered = "#{cc.attrs.value.id == sessionController.authUser.id}"> <div class = "userDetails"> <h:form> ... </h:form> </div> </h:panelGroup>

Otra opción es usar componentes de las bibliotecas Seam ( <s:div> ) o Tomahawk ( <t:htmlTag> ) si ya las tiene en su proyecto.

Ver: http://www.jsftoolbox.com/documentation/seam/09-TagReference/seam-div.html

<s:div styleClass = "userDetails" rendered = "#{cc.attrs.value.id != sessionController.authUser.id}"> Name: #{cc.attrs.value.name} Details: #{cc.attrs.value.details} </s:div> <s:div styleClass = "userDetails" rendered = "#{cc.attrs.value.id == sessionController.authUser.id}"> <h:form> ... </h:form> </s:div>

O bien: http://myfaces.apache.org/tomahawk-project/tomahawk12/tagdoc/t_htmlTag.html

<t:htmlTag value="div" styleClass = "userDetails" rendered = "#{cc.attrs.value.id != sessionController.authUser.id}"> Name: #{cc.attrs.value.name} Details: #{cc.attrs.value.details} </t:htmlTag> <t:htmlTag value="div" styleClass = "userDetails" rendered = "#{cc.attrs.value.id == sessionController.authUser.id}"> <h:form> ... </h:form> </t:htmlTag>