Como re-tornar um componente RichFaces após a4j ligação é invocado
Pergunta
esperando que alguém pode me ajudar com um ligeiro obstáculo que eu vim acima contra no que diz respeito à re-renderização de componentes RichFaces após uma ligação a4j / botão realizou a sua ação. Uma versão simplificada do meu problema é o seguinte:
Eu tenho 2 componentes de saída exibindo um valor de texto que são prestados com base em algum valor na minha classe manager:
<h:outputText id="on" value="ON" rendered="#{manager.isOn}" />
<h:outputText id="off" value="OFF" rendered="#{not manager.isOn}" />
Eu também tenho 2 links a4j que exigem alguma ação e, em seguida, re-tornar o acima componentes 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" />
O que eu esperaria acontecer é, quando eu clico no botão 'Set On', o componente outputText 'ON' iria mostrá, ea 'componente OFF outputText iria mostrar. No entanto, isso não acontece.
Alguém tem a resposta de por que isso é assim, e como eu vou sobre re-renderização estes componentes após a ação componente a4j completou?
Solução
Enrole os componentes outputText
em um s:div
e re-tornar essa a seguinte:
<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" />
Outras dicas
Eu concordo com Gene mas a melhor maneira que eu poderia encontrar é cercar o conteúdo com
<a4j:outputpanel id="whatever_id" />
Por exemplo,
<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>
Você rerender o pai. Ele não tem que ser um tag Seam.
Suponho que a sua h:. OutputText elementos em e off não são processados ??em tempo de carregamento da página
RichFaces não vai renderizados estes componentes mais tarde, mesmo que o valor de prestados alterado para true .