2009-07-10 9 views
6

Надеясь, что кто-то может помочь мне с небольшим препятствием, я столкнулся с проблемой повторного рендеринга компонентов RichFaces после того, как a4j link/button выполнила его действие , Упрощенная версия моей проблемы заключается в следующем:Как перерисовать компонент RichFaces после ссылки a4j вызывается

У меня 2 выходных компонентов, отображающие значение текста, которые предоставляются на основании некоторого значения в моем менеджер классе:

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

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

У меня также есть 2 a4j ссылки, которые требуют какое-то действие, а затем повторно вынести вышеуказанные компоненты 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" /> 

то, что я ожидал бы случиться, когда я нажимаю «Set On» кнопку, компонент outputText «на» будет отобразите, и «OFF outputText. Однако этого не происходит.

Есть ли у кого-нибудь ответ, почему это так, и как я могу перепрофилировать эти компоненты после завершения действия компонента a4j?

ответ

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

Я полагаю, что ваш ч: outputText элементы на и от не отображаются во время нагрузки страница.

RichFaces не засавить позже эти компоненты, даже если значение оказываемых изменено на истинной.

1

Вы перерегистрируете родителя. Он не должен быть тегом Seam.

3

Я согласен с Джином, но лучший способ, которым я мог бы найти, чтобы окружить содержание с

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