Bom dia,
Estou tendo alguns problemas com PrimeFaces e Ajax.
Tenho um cadastro e nele há a chamada de um <p:dialog> que realiza o cadastro de um produto.
Dentro desse <p:dialog>, ao clicar no Finalizar, eu realizo uma validação dos campos e, se o cadastro não passar por alguma das validações, o dialog deve ser atualizado pra conter uma mensagem dizendo qual o erro.
Se ele for concluído com sucesso, o dialog deve ser fechado, e a página principal deve ser atualizada contendo os dados do produto cadastrado, e tudo segue normalmente.
O que acontece é que, se eu colocar pro dialog ser fechado no oncomplete, ele fecha sempre.
Não estou conseguindo fazer isso. Ou ele sempre fecha, ou não fecha nunca.
Segue parte do código…
Controller
public void novoProduto(ActionEvent evt) throws Exception{
if((nomeProduto != null) && (!nomeProduto.equals(""))){
if((codFuncaoProduto != null) && (!codFuncaoProduto.equals("0")) && (!codFuncaoProduto.equals(""))){
if((codFabricante != null) && (!codFabricante.equals("0")) && (!codFabricante.equals(""))){
Produto p = new Produto();
//Adicionar nome
p.setDescricao(nomeProduto);
//Adicionar Funcao
p.setFuncao(codFuncaoProduto);
//Adicionar Fabricante
Fabricante f = new Fabricante();
f = (Fabricante) (dao.buscarPorCampo(new Fabricante(), "CodFabricante", codFabricante));
p.setFabricante(f);
//Definir Propriedade
p.setPropriedade(propriedade);
//Definir Status
p.setStatus('A');
//Gravando o produto na base
dao.gravar(p);
produto = p;
}else{
FacesContext.getCurrentInstance().addMessage(null, new TratamentoErro(TratamentoErro.SELECIONA_FABRICANTE).getFacesMessage());
}
}
else{
FacesContext.getCurrentInstance().addMessage(null, new TratamentoErro(TratamentoErro.SELECIONA_FUNCAO).getFacesMessage());
}
}
else{
FacesContext.getCurrentInstance().addMessage(null, new TratamentoErro(TratamentoErro.SEM_NOME_PRODUTO).getFacesMessage());
}
}
Dialog
<p:dialog id="outrodialog" widgetVar="outrodialog" width="800" close="true" fixedCenter="true" resizable="false"
modal="false" draggable="false" underlay="none">
<p:panel id="painelNovoProduto">
<f:facet name="header">
<h:outputText value="Novo Produto: " />
</f:facet>
<h:panelGrid columns="2" >
<h:outputText value="Nome: " />
<h:inputText value="#{operacaoController.nomeProduto}" />
<h:outputText value="Funçao: " />
<h:selectOneMenu id="slcFuncao" value="#{operacaoController.codFuncaoProduto}">
<f:selectItems value="#{operacaoController.itensFuncaoProduto}"/>
</h:selectOneMenu>
<h:outputText value="Fabricante: " />
<h:selectOneMenu id="slcFabricante" value="#{operacaoController.codFabricante}">
<f:selectItems value="#{operacaoController.itensFabricantes}"/>
</h:selectOneMenu>
</h:panelGrid>
<p:commandButton id="selectProdutoOutro" value="Finalizar"
actionListener="#{operacaoController.novoProduto}"
styleClass="btn_finalizar"
update="@form:painelNovoProduto"
oncomplete="outrodialog.hide()">
</p:commandButton>
<div class="espaco_alerta">
<p:messages id="mensagemNovoProduto" showDetail="true"/>
</div>
</p:panel>
</p:dialog>