2009-07-10 16 views
6

Espero que alguien me ayude con un pequeño obstáculo al que me he enfrentado en lo que respecta a la reproducción de componentes RichFaces después de que un enlace/botón a4j haya realizado su acción . Una versión simplificada de mi problema es el siguiente:Cómo volver a renderizar un componente de RichFaces después de invocar un enlace a4j

tengo 2 componentes de salida que muestra un valor de texto que son prestados basa en algún valor en mi clase de gestor:

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

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

también tengo enlaces 2 a4j que llaman algún tipo de acción y luego volver a hacer los componentes outputText anteriores:

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

lo que se espera que suceda es, al hacer clic en el 'SET en' botón, el componente outputText 'ON' sería unhide, y el 'OFF El componente outputText se mostraría. Sin embargo, esto no sucede.

¿Alguien tiene la respuesta de por qué esto es así, y cómo hago para volver a representar estos componentes después de que se haya completado la acción del componente a4j?

Respuesta

11

abrigo de los outputText componentes de un s:div y volver a hacer que la siguiente manera:

<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

supongo que su h: outputText elementos en y fuera no se procesan en tiempo de carga de la página.

RichFaces no se regenere estos componentes más adelante, incluso si el valor de rendido cambió a verdadera.

1

Usted rerender al padre. No tiene que ser una etiqueta de costura.

3

Estoy de acuerdo con el gene pero la mejor manera que pude encontrar es rodear el contenido con

<a4j:outputpanel id="whatever_id" />

por ejemplo,

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