How to compare 2 strings with ?

后端 未结 1 1894
情话喂你
情话喂你 2021-02-09 17:06

I am trying to display a or accordingly to a String property returned by a backing bean. I am having problem

相关标签:
1条回答
  • 2021-02-09 17:17

    You seem to be using this in a <h:dataTable>. The JSTL tags are evaluated during view build time only, not during view render time. It boils down to this: JSTL runs from top to bottom first and then hands the produced result over to JSF to run from top to bottom again. At the moment the JSTL tags are evaluated inside a JSF datatable, the datatable's iterated item (the one in var attribute) isn't available to JSTL. Hence the test result is always false.

    Just use JSF component's rendered attribute instead.

    <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/>
    

    Here are some more examples how you could utilize the rendered attribute:

    <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'}" />
    

    Unrelated to the concrete problem, Roseindia is not the best JSF learning resource. I'd recommend to head to other resources.

    0 讨论(0)
提交回复
热议问题