我有一个 JSP portlet,需要根据枚举类型的 bean 属性的值显示不同的标记
public enum State {
CANCELED, COMPLETED
}
我使用以下代码来进行切换
<c:choose>
<c:when test="#{item.state == 'COMPLETED'}">
<img src="ok.gif" />
</c:when>
<c:when test="#{item.state == 'CANCELED'}">
<img src="ko.gif" />
</c:when>
</c:choose>
但它不起作用。有趣的是,在这两种情况下它都返回 false。 item 对象(在 ICEFaces 数据表内)是一个带有State
getter+setter 属性。
有人告诉我将枚举与字符串进行比较并使用==
运算符,但也许不是这样。
所以,我的问题是:我该如何使用<c:when>
标签将属性与枚举值进行比较?
... 项目对象 (ICEFaces 数据表内) ...
那么JSTL确实不行。它在视图构建期间运行,而不是在视图渲染期间运行。基本上,您可以将其可视化如下:JSTL 首先从上到下运行,然后将生成的包含 JSF 标记的结果仅交给 JSF,JSF 又从上到下运行。此时 JSTL 遇到迭代的 JSF 数据表#{item}
, it is null
因此它总是会评估false
并且 JSF 不会从 JSTL 检索这些图像。
您想改用 JSF 标记。我建议<h:graphicImage>
结合rendered
属性。
<h:graphicImage value="ok.gif" rendered="#{item.state == 'COMPLETED'}" />
<h:graphicImage value="ko.gif" rendered="#{item.state == 'CANCELED'}" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)