Olá pessoal,
Em alguns componentes em que preciso mudar dinamicamente suas propriedades, faço um binding para o mesmo e então seto a propriedade que eu quero no managed bean. Porém quando uso o
Vou postar um exemplo simples, para melhorar o entendimento:
<h:form>
<a4j:keepAlive beanName="Login"/>
<a4j:commandButton value="Mostra" action="#{Login.mostra}" ajaxSingle="true" reRender="grid1"/>
<a4j:commandButton value="Oculta" action="#{Login.oculta}" ajaxSingle="true" reRender="grid1"/>
<h:panelGrid id="grid1">
<h:panelGrid id="grid2" binding="#{Login.grid2}">
<h:outputText id="texto1" value="texto do grid"/>
</h:panelGrid>
</h:panelGrid>
</h:form>
Fiz 2 botões e 2 métodos para mostrar ou ocultar o grid2. No managed bean está assim:
private HtmlPanelGrid grid2;
public HtmlPanelGrid getGrid2() {
return grid2;
}
public void setGrid2(HtmlPanelGrid grid2) {
this.grid2 = grid2;
}
public void mostra(){
grid2.setRendered(true);
}
public void oculta(){
grid2.setRendered(false);
}
Se eu remover o keepAlive, isto funciona bem, senão ele não atualiza o componente na tela.
Alguém já tentou fazer algo parecido?