Pessoal tenho um crud básico e ao subter o formulário, o mesmo é submetido duas vezes. Comprovei isso pelo debug (para duas vezes) e em uma chamada javascript que emite um alert();
Estou postando o código para facilitar a ajuda.
Alguém saberia me explicar o porque isso acontece?
Muito obrigado.
JSP
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib prefix="rich" uri="http://richfaces.org/rich"%>
<%@ taglib prefix="a4j" uri="http://richfaces.org/a4j"%>
<html>
<head>
<title>SICOOP - Sistema de Controle Operacional</title>
<link type="text/css" rel="stylesheet" href="../../styles/style.css"/>
<script type="text/javascript" src="../../js/mascara.js"></script>
<script type="text/javascript" src="../../js/fechar.js"></script>
</head>
<body>
<div id="divContainer">
<f:view>
<a4j:form id="form">
<rich:panel styleClass="panel">
<f:facet name="header">
<h:outputText value="Cadastro de clientes"/>
</f:facet>
<h:panelGrid columns="3">
<h:outputLabel for="cnpj" value="CNPJ*"/>
<h:inputText id="cnpj" value="#{cliente.clnt.cnpj}" maxlength="18" size="16" required="true" onkeypress="return mascara(this, 'CNPJ', event)">
<f:validator validatorId="ValidatorCnpj"/>
</h:inputText>
<rich:message for="cnpj" errorClass="msgValidationError">
<f:facet name="passedMarker">
<h:graphicImage value="../../images/passed.gif"/>
</f:facet>
<f:facet name="errorMarker">
<h:graphicImage value="../../images/error.gif"/>
</f:facet>
</rich:message>
.
.
.
</h:panelGrid>
<rich:toolBar style="width: 97.5%;">
<a4j:commandButton id="btnSalvar" value="Salvar" action="#{cliente.salvar}" styleClass="btn"/>
<a4j:commandButton id="btnNovo" value="Novo" action="#{cliente.abrirNovo}" immediate="true" styleClass="btn"/>
<a4j:commandButton id="btnExcluir" value="Excluir" action="#{cliente.excluir}" immediate="true" styleClass="btn"/>
<a4j:commandButton id="btnVoltar" value="Voltar" action="#{cliente.voltar}" immediate="true" styleClass="btn"/>
<a4j:commandButton id="btnFechar" value="Fechar" immediate="true" onclick="fechar();" styleClass="btn"/>
</rich:toolBar>
</rich:panel>
</a4j:form>
</f:view>
</div>
</body>
</html>
MB
public String salvar() throws Exception{
/*Remove os caracteres de formatação do cpf*/
String cpf = this.fncnr.getCpf().replaceAll("\\.", "");
cpf = cpf.replaceAll("-", "");
this.getFncnr().setCpf(cpf);
this.getFncnr().setInUtzo("S");
new FncnrDAO().persist(this.getFncnr());
return ConstantesUtil.SUCESSO_FUNCIONARIO;
}