2

リンクをクリックするだけでメソッドを呼び出しています。次のコードはうまく機能します

                        <ui:repeat value="#{myBean.names}" var="name"
                               varStatus="idx">
                        <li>
                            <h:commandLink value="#{name.label}">
                                <f:ajax execute="@this" event="click" render="@all" listener="#{myBean.changeActiveName}" >
                                </f:ajax>
                            </h:commandLink>
                        </li>
                    </ui:repeat>

しかし、パラメータをAjax呼び出しに渡そうとすると、ページ全体が更新され始めます

                    <ui:repeat value="#{myBean.names}" var="name"
                               varStatus="idx">
                        <li>
                            <h:commandLink value="#{name.label}">
                                <f:ajax execute="@this" event="click" render="@all" listener="#{myBean.changeActiveName}" >
                                    <f:param name="idx" value="#{idx}" />
                                </f:ajax>
                            </h:commandLink>
                        </li>
                    </ui:repeat>

このコードの何が問題になっていますか?

4

1 に答える 1

5

は、 ではなく<f:param>、親UICommandコンポーネントの子である必要があり<f:ajax>ます。

<h:commandLink value="#{name.label}">
    <f:param name="idx" value="#{idx}" />
    <f:ajax listener="#{myBean.changeActiveName}" render="@all" />
</h:commandLink>

execute(あなたの定義はすでにデフォルトであるため、 and属性を削除したことに注意してeventください。さらに、インスタンス全体IterationStatusをリクエストパラメーターとして送信するとどのように役立つのでしょうか...代わりにインデックスを送信したかっただけですか?#{idx.index}代わりに使用するなど)

以下も参照してください。

于 2012-08-06T18:11:06.680 に答える