【问题标题】:Problems in usage of JSP's <c:forEach>JSP的<c:forEach>使用中的问题
【发布时间】:2012-12-04 17:07:48
【问题描述】:

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

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

但是,我有一个例外:

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

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

【问题讨论】:

    标签: jsp jsf


    【解决方案1】:

    这是行不通的。 #{item} 仅在视图构建期间可用,而 rendered 属性在视图渲染期间评估。

    请改用&lt;c:if&gt;

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

    或者,如果您使用的是 JSF2(已过期 3 年以上),请将旧版 JSP 替换为其后继者 Facelets 并改用其 &lt;ui:repeat&gt; 组件。它也在视图渲染期间进行评估。

    <ui:repeat value="#{tree.items}" var="item">
        <h:commandLink rendered="#{item.type == 'category'}" action="#{item.onNodeClicked}" />
    

    【讨论】:

    • 我应该注意到,在依赖项发生变化后会出现问题。代码未更改。
    猜你喜欢
    • 2012-01-14
    • 2011-11-23
    • 1970-01-01
    • 2012-03-16
    • 2011-12-18
    • 2017-04-08
    • 1970-01-01
    • 2012-12-12
    • 2013-09-01
    相关资源
    最近更新 更多