我正在尝试显示一个<h:outputText>
or <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>
然而,比较不起作用。这是正确的方法吗?
没有的话可以做到吗<jsp:useBean....>
如:JSP样本 http://www.roseindia.net/jsp/simple-jsp-example/JSTLUsingCIfIgnoreCase.shtml
谢谢你的帮助
你似乎在使用这个<h:dataTable>
。 JSTL 标记仅在视图构建期间进行评估,而不是在视图渲染期间进行评估。归结起来就是:JSTL先从上到下运行,然后将产生的结果交给JSF再从上到下运行。目前,JSTL 标记在 JSF 数据表内进行评估,数据表的迭代项(位于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/>
这里有一些更多的例子,你可以如何利用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'}" />
与具体问题无关,Roseindia 是not http://balusc.blogspot.com/2008/06/what-is-it-with-roseindia.html最好的 JSF 学习资源。我建议前往其他资源。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)