0
<h:form>
    <ui:repeat value="#{sampleManagedBean.food}" var="food">
        <h:commandLink value="Name" action="#{sampleManagedBean.outcome}">
            <f:param name="name" value="ssd" />
            <f:param name="v" value="#{food.boy}" />
        </h:commandLink>
        <h2>#{food.boy}</h2>
    </ui:repeat>
</h:form> 

<f:param>に基づいて設定された 2 番目の値を取得できません<ui:repeat var>。ハードコードされた最初のものだけを取得できます。

4

2 に答える 2

0

ui:repeatUI コンポーネントf:paramですが、タグハンドラ (JSTL など) です。タグハンドラは、ビューのレンダリング時に実行される UI コンポーネントの前に、ビューのビルド時に実行されます (こちらを参照)。

私たちの場合、ビューのビルド段階ではf:paramについて何も知らないことを意味し#{food.boy}ます。c:forEach問題はありませんが、何らかの ajax アクションを呼び出し
#{sampleManagedBean.food}てフォームのサイズを変更し、再レンダリングすると、ページに変更が表示されません。部分的な再レンダリング (ajax) は UI コンポーネント ツリーのみに影響するためです。c:forEachハードコーディングと の間のどこかにui:repeatあるため、変更を確認するにはページをリロードする必要があります。

于 2012-09-12T12:56:58.130 に答える
0

この方法を試して、

    <h:form>
    <ui:repeat value="#{sampleManagedBean.food}" var="food">
        <h:commandLink value="Name" action="#{sampleManagedBean.outcome}">
            <f:setPropertyActionListener value="ssd" target="#{sampleManagedBean.name}" />
            <f:setPropertyActionListener value="#{food.boy}" target="#{sampleManagedBean.v}" />
        </h:commandLink>
    </ui:repeat>
    </h:form>
于 2012-10-10T05:08:16.187 に答える