我试图显示一个<h:outputText>或<h:commandLink>相应的支持bean返回的String属性.我在比较字符串时遇到问题.以下是插图:
<c:if test='#{column.header ne "Details"}'>
<h:outputText value="#{recordTable[column.property]}"/><br/>
</c:if>
<c:if test='#{column.header eq "Details"}'>
<h:commandLink value="#{column.header}"
action="#{searchBean.goToWarehouse}"/><br/>
</c:if>
Run Code Online (Sandbox Code Playgroud)
然而,比较不起作用.这是正确的方法吗?可以在没有JSP示例的情况下<jsp:useBean....>完成
谢谢你的帮助
Bal*_*usC 11
你似乎在使用它<h:dataTable>.仅在视图构建时间内评估JSTL标记,而不是在视图渲染时间期间评估.归结为:JSTL首先从上到下运行,然后将生成的结果交给JSF再次从上到下运行.目前,在JSF数据表中评估JSTL标记var,JSTL无法使用数据表的迭代项(属性中的项).因此测试结果总是如此false.
只需使用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/>
Run Code Online (Sandbox Code Playgroud)
以下是一些如何使用该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'}" />
Run Code Online (Sandbox Code Playgroud)
与具体问题无关,Roseindia 不是最好的JSF学习资源.我建议去其他资源.
| 归档时间: |
|
| 查看次数: |
26918 次 |
| 最近记录: |