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 はツリー アイテムを String オブジェクトとして認識するようです。私は何が欠けていますか?

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 に答える