6

a4jリンク/ボタンがアクションを実行した後のRichFacesコンポーネントの再レンダリングに関して、私が直面したわずかなハードルを誰かが助けてくれることを願っています。私の問題の簡略版は次のとおりです。

マネージャークラスの値に基づいてレンダリングされるテキスト値を表示する2つの出力コンポーネントがあります。

<h:outputText id="on" value="ON" rendered="#{manager.isOn}" />

<h:outputText id="off" value="OFF" rendered="#{not manager.isOn}" />

また、アクションを呼び出して上記のoutputTextコンポーネントを再レンダリングする2つのa4jリンクがあります。

<a4j:commandLink ajaxSingle="true" value="Set On" action="#{manager.setOn(true)}" reRender="on,off" />

<a4j:commandLink ajaxSingle="true" value="Set Off" action="#{manager.setOn(false)}" reRender="on,off" />

「SetOn」ボタンをクリックすると、「ON」のoutputTextコンポーネントが再表示され、「OFFのoutputText」コンポーネントが表示されます。ただし、これは発生しません。

これがなぜそうなのか、そしてa4jコンポーネントアクションが完了した後にこれらのコンポーネントを再レンダリングする方法について誰かが答えを持っていますか?

4

4 に答える 4

11

outputTextコンポーネントをでラップし、s:div次のように再レンダリングします。

<s:div id="myDiv">
    <h:outputText id="on" value="ON" rendered="#{manager.isOn}" />

    <h:outputText id="off" value="OFF" rendered="#{not manager.isOn}" />
</s:div>

<a4j:commandLink ajaxSingle="true" value="Set On"
   action="#{manager.setOn(true)}" reRender="myDiv" />

<a4j:commandLink ajaxSingle="true" value="Set Off"
   action="#{manager.setOn(false)}" reRender="myDiv" />
于 2009-07-10T06:56:26.060 に答える
3

私はGeneに同意しますが、私が見つけることができる最善の方法は、コンテンツをで囲むことです。

<a4j:outputpanel id="whatever_id" />

例えば、

<a4j:outputpanel id="myDiv">
    <h:outputText id="on" value="ON" rendered="#{manager.isOn}" />
    <h:outputText id="off" value="OFF" rendered="#{not manager.isOn}" />
</a4j:outputpanel>
于 2009-10-02T16:40:49.977 に答える
1

親を再レンダリングします。Seamタグである必要はありません。

于 2009-09-21T10:37:25.533 に答える
0

ページの読み込み時に、h:outputText要素のオンオフはレンダリングされないと思います。

レンダリングの値がtrueに変更された場合でも、RichFacesはこれらのコンポーネントを後で再レンダリングしません。

于 2009-07-23T09:34:48.163 に答える