1

我正在尝试遍历项目集合:

<c:forEach items="#{tree.items}" var="item">
    <h:commandLink rendered="#{item.type == 'category'}" action="#{item.onNodeClicked}"

但是,我有一个例外:

javax.el.PropertyNotFoundException:类'java.lang.String'没有属性'type'。

看起来 JSP 将树项识别为字符串对象。我错过了什么?

4

1 回答 1

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 年多),请将旧版 JSP 替换为其后续的Facelets并改用其<ui:repeat>组件。它也在视图渲染期间进行评估。

<ui:repeat value="#{tree.items}" var="item">
    <h:commandLink rendered="#{item.type == 'category'}" action="#{item.onNodeClicked}" />
于 2012-12-17T15:27:14.543 回答