我正在尝试迭代项目集合:
<c:forEach items="#{tree.items}" var="item">
<h:commandLink rendered="#{item.type == 'category'}" action="#{item.onNodeClicked}"
Hovewer,我有一个例外:
javax.el.PropertyNotFoundException:类'java.lang.String'没有属性'type'。
看起来JSP将树项识别为String对象。我错过了什么?
答案 0 :(得分:1)
这不起作用。 #{item}
仅在视图构建时可用,而rendered
属性在视图渲染时评估。
改为使用<c:if>
。
<c:forEach items="#{tree.items}" var="item">
<c:if test="#{item.type == 'category'}">
<h:commandLink ... action="#{item.onNodeClicked}" />
或者,如果您使用的是JSF2(已经超过3年),请将其继承者Facelets替换为旧版JSP,并使用其<ui:repeat>
组件。它也在视图渲染时间内进行了评估。
<ui:repeat value="#{tree.items}" var="item">
<h:commandLink rendered="#{item.type == 'category'}" action="#{item.onNodeClicked}" />