Wydaje się, że używając tego w <h:dataTable>
. Znaczniki JSTL są oceniane tylko podczas wyświetlania widoku, a nie podczas renderowania widoku. Sprowadza się to do tego, że JSTL najpierw biegnie od góry do dołu, a następnie przekazuje uzyskany wynik do JSF, aby ponownie przejść od góry do dołu. Obecnie znaczniki JSTL są oceniane w datowalnym zbiorze JSF, iterowany element danych (ten w atrybucie var
) nie jest dostępny dla JSTL. Dlatego wynik testu jest zawsze false
.
Po prostu użyj atrybutu komponentu JSF: rendered
.
<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/>
Oto kilka przykładów, jak można wykorzystać atrybut 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'}" />
niezwiązane z konkretnym problemem, Roseindia jest not najlepszym źródłem uczenia JSF. Zaleciłbym udać się do innych zasobów.
Po prostu skonsultowałem się z zespołem Java Arquitect mojego zespołu i on dał mi dokładnie taką samą odpowiedź jak ty. Bardzo dziękuję za odpowiedź! :) – camiloqp
Nie ma za co. – BalusC
http://balusc.blogspot.in/2008/06/what-is-it-with-roseindia.html – KNU