Minha intenção é exibir uma mensagem para o usuário em um rich:popupPanel após inserir um registro no BD.
Com o código abaixo eu consigo fazer o desejado, só que com um problema. Só dá certo quando digito todos os campos da página corretamente. Se um dos campos não passa na validação, a mensagem de validação é exibida no h:messages só que a página não muda mais, mesmo se altero o conteúdo do campo e clico no botão novamente.
Outra coisa: ao exibir este popupPanel, ao clicar no botão OK gostaria que fosse redirecionado para a mesma página, com os campos em branco, mas isso não dá certo.
O que pode estar errado?
Estou usando Richfaces 4.2.2, MyFaces 2.1.8, Tomcat 7
pagina.xhtml
(...)
<a4j:outputPanel id="pnlMessages" ajaxRendered="true">
<rich:messages id="messages" />
</a4j:outputPanel>
//
//campos com validação
//
<a4j:commandButton id="btnInserir" value="Inserir" oncomplete="#{rich:component('pnlOk')}.show()" render="pnlMessages outPnlOk" actionListener="#{meubeanMB.inserir}" />
<a4j:outputPanel id="outPnlOk">
<rich:popupPanel id="pnlOk" rendered="#{meubeanMB.sucesso}" modal="true" height="150">
<h:graphicImage value="/images/info.jpg" />
<h:panelGrid columns="1">
<h:outputText id="textoModalOk" value="#{meubeanMB.textoModal}" />
<h:commandButton value="OK" action="pagina?faces-redirect=true"
onclick="#{rich:component('pnlOk')}.hide(); return false;" >
<a4j:ajax execute="formPnlOk" />
</h:commandButton>
</h:panelGrid>
</rich:popupPanel>
</a4j:outputPanel>
MeuBean
public void inserir(ActionEvent evt){
try{
(...) alimenta atributos obtidos do form
gravaBD();
setTextoModal("Registro inserido com sucesso");
sucesso = true;
} catch (Exception e) {
e.printStackTrace();
}
}