Frage

Hoffnung, jemand mir mit einer leichten Hürde helfen kann ich gegen in Bezug habe komme wieder Rendering von Richfaces-Komponenten nach einem a4j Link / Button hat ausgeführt es Aktion ist. Eine vereinfachte Version meines Problems ist wie folgt:

Ich habe 2 Ausgabekomponenten einen Textwert anzeigt, die auf einen Wert in meinem Manager Klasse basiert erbracht werden:

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

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

Ich habe auch 2 a4j Links, die eine Aktion aufrufen und dann die oben genannten Komponenten output wieder machen:

<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" />

Was ich würde erwarten, geschehen ist, wenn ich die Taste ‚On Set‘ klicken, wird die ‚ON‘ output Komponente würde sichtbar machen und die ‚OFF output Komponente zeigen würde. Dies ist jedoch nicht der Fall sein.

Hat jemand die Antwort auf die Frage, warum dies so ist, und wie ich mich über neu machen diese Komponenten nach der a4j Komponente Aktion abgeschlossen ist?

War es hilfreich?

Lösung

Wickeln Sie die outputText Komponenten in einem s:div und wieder machen, dass Sie wie folgt vor:

<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" />

Andere Tipps

ich mit Genen zustimmen, aber der beste Weg, den ich finden konnte ist, den Inhalt mit umgeben

<a4j:outputpanel id="whatever_id" />

zum Beispiel

<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>

Sie rerender die Eltern. Es muss keine Seam-Tag sein.

Ich nehme an, dass Ihr h. Output Elemente auf und off ist nicht zur Ladezeit der Seite gerendert

Richfaces werden diese Komponenten nicht rerender später auch wenn der Wert von gemacht geändert true .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top