Pessoal, tem um tempo que eu enfrento umas situações onde, após uma requisição ajax a atualização na tela não acontece…por exemplo:
<h:panelGrid id="grid" columns="3">
<h:selectOneMenu id="combo1" value="#{bean.propriedadeCombo1}">
<f:selectItems value="#{bean.listaCombo1}"/>
<f:ajax event="change" execute="@this" listener="#{bean.ajaxCombo1}" render="combo2"/>
</h:selectOneMenu>
<h:selectOneMenu id="combo2" value="#{bean.propriedadeCombo2}" rendered="#{not empty bean.algumaCoisa}">
<f:selectItems value="#{bean.listaCombo2}"/>
</h:selectOneMenu>
<a4j:commandLink action="#{bean.acaoLink}">
<h:outputText value="link" />
</a4j:commandLink>
</h:panelGrid>
Esse exemplo acima não funciona…o combo dois não é atualizado após o ajax disparado do combo um…mas se eu mando renderizar o grid todo, ai funciona:
<h:panelGrid id="grid" columns="3">
<h:selectOneMenu id="combo1" value="#{bean.propriedadeCombo1}">
<f:selectItems value="#{bean.listaCombo1}"/>
<f:ajax event="change" execute="@this" listener="#{bean.ajaxCombo1}" render="grid"/>
</h:selectOneMenu>
<h:selectOneMenu id="combo2" value="#{bean.propriedadeCombo2}" rendered="#{not empty bean.algumaCoisa}">
<f:selectItems value="#{bean.listaCombo2}"/>
</h:selectOneMenu>
<a4j:commandLink action="#{bean.acaoLink}">
<h:outputText value="link" />
</a4j:commandLink>
</h:panelGrid>
Alguém sabe pq no primeiro exemplo não funciona? Existe alguma condição para que o um componente possa sofrer uma nova renderização ou algo assim?