2009-07-10 9 views
6

Mam nadzieję, że ktoś może mi pomóc z lekką przeszkodą, z którą się spotkałem, jeśli chodzi o ponowne renderowanie komponentów RichFaces po wykonaniu linku/przycisku a4j . Uproszczona wersja mój problem jest następujący:Jak ponownie renderować komponent RichFaces po wywołaniu linku a4j

Mam 2 składniki wyjściowe wyświetlania wartości tekstowej, które są świadczone w oparciu o pewną wartość w mojej klasie Manager:

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

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

Mam też linki 2 a4j które wywołują pewne działania, a następnie ponowne renderowanie powyższe składniki outputText:

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

co by się spodziewać wydarzy się, kiedy kliknij „Ustaw On” przycisk, komponent outputText na „on” będzie odkryć, a „OFF Element outputText będzie się wyświetlał. Jednak tak się nie dzieje.

Czy ktoś ma odpowiedź na pytanie, dlaczego tak się dzieje i jak mam zamiar ponownie renderować te komponenty po zakończeniu działania składnika a4j?

Odpowiedz

11

zawinąć komponentów w s:div i outputText re-czynią to w sposób następujący:

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

Przypuszczam, że h: outputText elementy na i off nie są renderowane w czasie obciążenia Strona.

RichFaces nie rerender te elementy później nawet jeżeli wartość renderowane zmieniona na prawdziwej.

1

Podajesz rodzica. Nie musi to być tag Seam.

3

zgadzam się z Gene ale najlepszym sposobem udało mi się znaleźć to, aby otoczyć treść z

<a4j:outputpanel id="whatever_id" />

np

<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> 
Powiązane problemy