Olá a todos!
Estou estudando JSF+RichFaces e estou com uma duvida.
Fiz um formulário com um <h:selectOneMenu .../> onde o usuário seleciona um país. Se o país selecionado possui "Estados" cadastrados no banco gostaria que aparecesse um outro <h:selectOneMenu .../> com os estados. Caso o país não tenha estados cadastrados nos banco, gostaria que é aparecesse um <h:inputText .../> para o usuário digitar o estado.
Fiz desta maneira
<h:outputLabel value="#{msg.pais}" for="pais"/>
<h:selectOneMenu id="pais" value="#{usuarioMB.usuario.pais.id}" immediate="true">
<f:selectItems value="#{usuarioMB.paises}"/>
<a4j:support event="onblur" ajaxSingle="true" action="#{usuarioMB.showEstados}" reRender="status,status1,panel1,panel2"/>
</h:selectOneMenu>
<h:outputLabel value="#{msg.estado}" for="estado"/>
<h:panelGroup>
<a4j:outputPanel id="panel1">
<h:inputText id="estado" value="#{usuarioMB.usuario.estado}" maxlength="30" rendered="#{!usuarioMB.exibeEstados}"/>
</a4j:outputPanel>
<a4j:outputPanel id="panel2">
<h:selectOneMenu id="estado_combo" value="#{usuarioMB.usuario.estado}" rendered="#{usuarioMB.exibeEstados}">
<f:selectItems value="#{usuarioMB.estados}"/>
</h:selectOneMenu>
</a4j:outputPanel>
</h:panelGroup>
Esta funcionando perfeitamente (ou quase).
O único problema é quando o usuario faz o "submit" e dá erros de validações dos outros campos (que nao estão no codigo acima).
A variável "exibeEstados" fica null, entao só renderiza o <h:inputText .../> ao invés do <h:selectOneMenu .../>.
O método "showEstados" é onde ele verifica a existência de "estados" e seta o valor da variável "exibeEstados" (true/false)
Os outros campos estão também no mesmo Managed Bean (usuarioMB).
Acho que estou comentendo algum erro de conceito (ciclo de vida). Alguém pode me ajudar?
Desde já agradeço a ajuda
Clériston Martinelo