Visualización condicional de los componentes JSF


Primero, soy nuevo en Java EE, provengo de un sólido entorno de desarrollo ASP.NET. He pasado por la red, y podría extrañar esto, pero parece que no hay tutoriales simples y directos al punto sobre cómo podría conectar la clase bean de respaldo a los componentes de JSF.

Un buen ejemplo es como este, actualmente estoy tratando de crear una página JSF donde hay un conjunto de enlaces como barra de menú y un conjunto de formularios. Lo que estoy planeando hacer es, al hacer clic en un enlace, un formulario en particular será renderizar.

En ASP.NET, Podría recuperar fácilmente el elemento y luego establecer el atributo para ser visualizable. Me pregunto si hay una manera fácil (diablos, incluso de alguna manera) de hacer esto en JSF.

Los formularios ya están en la página, es solo cuestión de establecer el atributo "render" a true cuando hago clic en un enlace en particular.

Author: BalusC, 2011-02-02

2 answers

Sí, utilice el atributo rendered.

<h:form rendered="#{some boolean condition}">

Normalmente lo ata al modelo en lugar de dejar que el modelo agarre el componente y lo manipule.

Por ejemplo

<h:form rendered="#{bean.booleanValue}" />
<h:form rendered="#{bean.intValue gt 10}" />
<h:form rendered="#{bean.objectValue eq null}" />
<h:form rendered="#{bean.stringValue ne 'someValue'}" />
<h:form rendered="#{not empty bean.collectionValue}" />
<h:form rendered="#{not bean.booleanValue and bean.intValue ne 0}" />
<h:form rendered="#{bean.enumValue eq 'ONE' or bean.enumValue eq 'TWO'}" />

Tenga en cuenta la importancia de operadores EL basados en palabras clave tales como gt, ge, le y lt en lugar de >, >=, <= y < como corchetes angulares < y > son caracteres reservados en XML. Véase también esta pregunta relacionada: Error al analizar XHTML: El contenido de los elementos debe consistir de datos de caracteres bien formados o marcado .

En cuanto a su caso de uso específico, supongamos que el enlace está pasando un parámetro como el siguiente:

<a href="page.xhtml?form=1">link</a>

Luego puede mostrar el formulario de la siguiente manera:

<h:form rendered="#{param.form eq '1'}">

(el #{param} es un objeto EL implícito que se refiere a un Map que representa los parámetros de la solicitud)

Véase también:

 135
Author: BalusC,
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
2017-05-23 11:47:21

Además del post anterior puede tener

<h:form rendered="#{!bean.boolvalue}" />
<h:form rendered="#{bean.textvalue == 'value'}" />

Jsf 2.0

 10
Author: tosha Shah,
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
2012-10-11 21:24:02