1

以下のコードを使用して、バッキングBeanからdiv要素にIDを割り当てようとしています。

<c:forEach var="item" items="#{backingBean.dataModel}">
<t:div id="xyz_#{item.id}" forceId="true" forceIdIndex="false" title="#{item.name}" style="display:none">
    <ui:include src="#{item.view}">
        <ui:param name="id" value="#{item.id}" />
        <ui:param name="model" value="#{item.model}" />
    </ui:include>
</t:div>
</c:forEach>

ページが初めて読み込まれるとき、バッキングBeanから推測される正しいIDが割り当てられます。このコードでページのセクションを更新すると、バッキングBeanのgetIdメソッドは呼び出されませんが、getView、getModelが正しく呼び出されます。その結果、divのIDが正しくありません。

c:forEachの実行前にdividが割り当てられる場合があります。c:forEach内にあるときにバッキングBeanからのIdを使用するようにdivを強制するにはどうすればよいですか?

4

1 に答える 1

2

JSF UIコンポーネントのid(およびbinding)属性は、ビューのレンダリング時や、後続のポストバックでのまったく同じJSFコンポーネントツリーの将来の再利用時ではなく、ビューのビルド時(JSFコンポーネントツリーが初めてビルドされるとき)に評価されます。同じビュー。

なぜそんな風にアプローチしているのかよくわかりません<t:div><div>この特定のケースでは、プレーンHTMLを使用する方が理にかなっています。

<c:forEach var="item" items="#{backingBean.dataModel}">
    <div id="xyz_#{item.id}" title="#{item.name}" style="display:none">
        <ui:include src="#{item.view}">
            <ui:param name="id" value="#{item.id}" />
            <ui:param name="model" value="#{item.model}" />
        </ui:include>
    </div>
</c:forEach>

参照:

于 2012-10-10T14:41:41.767 に答える