Usted parece estar utilizando esto en un <h:dataTable>
. Las etiquetas JSTL se evalúan solo durante el tiempo de compilación de visualización, no durante el tiempo de visualización de visualización. Todo se reduce a esto: JSTL corre de arriba hacia abajo primero y luego pasa el resultado producido a JSF para volver a correr de arriba abajo. En el momento en que las etiquetas JSTL se evalúan dentro de una tabla de datos JSF, el elemento iterado de la tabla de datos (el que está en el atributo var
) no está disponible para JSTL. Por lo tanto, el resultado de la prueba siempre es false
.
Simplemente use el atributo rendered
del componente JSF en su lugar.
<h:outputText value="#{recordTable[column.property]}" rendered="#{column.header ne 'Details'}"/>
<h:commandLink value="#{column.header}" rendered="#{column.header eq 'Details'}" action="#{searchBean.goToWarehouse}"/>
<br/>
Éstos son algunos ejemplos más cómo se puede utilizar el atributo rendered
:
<h:someComponent rendered="#{bean.booleanValue}" />
<h:someComponent rendered="#{bean.intValue gt 10}" />
<h:someComponent rendered="#{bean.objectValue == null}" />
<h:someComponent rendered="#{bean.stringValue != 'someValue'}" />
<h:someComponent rendered="#{!empty bean.collectionValue}" />
<h:someComponent rendered="#{!bean.booleanValue and bean.intValue != 0}" />
<h:someComponent rendered="#{bean.enumValue == 'ONE' or bean.enumValue == 'TWO'}" />
Sin relación con el problema concreto, Roseindia es not el mejor recurso de aprendizaje JSF. Yo recomendaría dirigirme a otros recursos.
Acabo de consultar con el Arquitecto de Java de mi equipo y él me dio exactamente la misma respuesta que usted. ¡Muchas gracias por su respuesta! :) – camiloqp
De nada. – BalusC
http://balusc.blogspot.in/2008/06/what-is-it-with-roseindia.html – KNU