Galera to com um problema que nunca tinha visto antes, eu tenho uma tela cadastro_cliente, quando cadastro um usuario as validações de tela funcionam normalmente, tudo certinho mas quando estou tentando alterar um registro o ciclo de vida do jsf é interrompido por algum motivo antes da faze de validações, ele é enterrompido na faze aplicar os valores do requesta naum tenho ideia do porque e queria saber se alguem ja passou por isso para me ajudar a resolver esse problema.
vou colocar todos os codigos envolvidos nesse problema
cadastro_usuario
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition template="template.xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">
<ui:define name="content">
<h:form id="form" styleClass="form-horizontal">
<fieldset>
<legend>#{msgs.cadastroCliente}</legend>
<p:growl id="growl" showDetail="true" autoUpdate="true" life="#{msgs.life}" />
<p:tabView id="tabView">
<p:tab id="tab1" title="#{msgs.dadosPrincipais}">
<p:focus />
<div class="control-group">
<h:outputLabel value="#{msgs.nome}" styleClass="control-label" />
<div class="controls">
<p:inputText value="#{clienteController.cliente.nome}" styleClass="#{msgs.inputXLarge}"
required="true" requiredMessage="#{msgs.nomeRequerido}" />
</div>
</div>
<div class="control-group">
<h:outputLabel value="#{msgs.cpf}" styleClass="control-label" />
<div class="controls">
<p:inputMask value="#{clienteController.cliente.cpf}" styleClass="#{msgs.inputXLarge}"
mask="#{msgs.cpfMask}"
required="true" requiredMessage="#{msgs.cpfRequerido}" />
</div>
</div>
<div class="control-group">
<h:outputLabel value="#{msgs.rg}" styleClass="control-label" />
<div class="controls">
<p:inputMask value="#{clienteController.cliente.rg}" styleClass="#{msgs.inputXLarge}"
mask="#{msgs.rgMask}"
required="true" requiredMessage="#{msgs.rgRequerido}" />
</div>
</div>
<div class="control-group">
<h:outputLabel value="#{msgs.email}" styleClass="control-label" />
<div class="controls">
<p:inputText value="#{clienteController.cliente.email}" styleClass="#{msgs.inputXLarge}"
required="true" requiredMessage="#{msgs.emailRequerido}"
validator="emailValidator"/>
</div>
</div>
<div class="control-group">
<h:outputLabel value="#{msgs.sexo}" styleClass="control-label" />
<div class="controls">
<p:selectOneRadio value="#{clienteController.cliente.sexo}" >
<f:selectItem itemValue="2" itemLabel="Feminino"/>
<f:selectItem itemValue="1" itemLabel="Masculino"/>
</p:selectOneRadio>
</div>
</div>
<div class="control-group">
<h:outputLabel value="#{msgs.observacao}" styleClass="control-label" />
<div class="controls">
<p:inputTextarea value="#{clienteController.cliente.observacao}" styleClass="#{msgs.inputXLarge}" />
</div>
</div>
</p:tab>
<p:tab id="tab2" title="#{msgs.enderecoResidencial}">
<p:focus />
<div class="control-group">
<h:outputLabel value="#{msgs.rua}" styleClass="control-label" />
<div class="controls">
<p:inputText value="#{clienteController.cliente.enderecoresidencia.rua}" styleClass="#{msgs.inputXLarge}"
required="true" requiredMessage="#{msgs.ruaRequerido}" />
</div>
</div>
<div class="control-group">
<h:outputLabel value="#{msgs.bairro}" styleClass="control-label" />
<div class="controls">
<p:inputText value="#{clienteController.cliente.enderecoresidencia.bairo}" styleClass="#{msgs.inputXLarge}"
required="true" requiredMessage="#{msgs.bairroRequerido}" />
</div>
</div>
<div class="control-group">
<h:outputLabel value="#{msgs.numero}" styleClass="control-label" />
<div class="controls">
<p:inputText value="#{clienteController.cliente.enderecoresidencia.numero}" styleClass="#{msgs.inputXLarge}"
required="true" requiredMessage="#{msgs.numeroRequerido}" />
</div>
</div>
<div class="control-group">
<h:outputLabel value="#{msgs.estado}" styleClass="control-label" />
<div class="controls">
<p:selectOneMenu value="#{clienteController.idEstadoResidemcial}">
<f:selectItems var="est" value="#{clienteController.listaEstado}" itemLabel="#{est.estado}" itemValue="#{est.idEstado}" />
<p:ajax event="change" listener="#{clienteController.carregarMunicipiosEndResidencial()}" update="panel1" />
</p:selectOneMenu>
</div>
</div>
<p:outputPanel id="panel1">
<div class="control-group">
<h:outputLabel value="#{msgs.municipio}" styleClass="control-label" />
<div class="controls">
<p:selectOneMenu value="#{clienteController.idMunicipioResidencial}">
<f:selectItems value="#{clienteController.listaMunicipioResidencial}" var="munc" itemLabel="#{munc.municipio}"
itemValue="#{munc.idMunicipio}" />
</p:selectOneMenu>
</div>
</div>
</p:outputPanel>
</p:tab>
<p:tab id="tab3" title="#{msgs.enderecoComercial}">
<div class="control-group">
<h:outputLabel value="#{msgs.rua}" styleClass="control-label" />
<div class="controls">
<p:inputText value="#{clienteController.cliente.enderecotrabalho.rua}" styleClass="#{msgs.inputXLarge}" />
</div>
</div>
<div class="control-group">
<h:outputLabel value="#{msgs.bairro}" styleClass="control-label" />
<div class="controls">
<p:inputText value="#{clienteController.cliente.enderecotrabalho.bairo}" styleClass="#{msgs.inputXLarge}" />
</div>
</div>
<div class="control-group">
<h:outputLabel value="#{msgs.numero}" styleClass="control-label" />
<div class="controls">
<p:inputText value="#{clienteController.cliente.enderecotrabalho.numero}" styleClass="#{msgs.inputXLarge}" />
</div>
</div>
<div class="control-group">
<h:outputLabel value="#{msgs.estado}" styleClass="control-label" />
<div class="controls">
<p:selectOneMenu value="#{clienteController.idEstadoComercial}">
<f:selectItems var="est" value="#{clienteController.listaEstado}" itemLabel="#{est.estado}" itemValue="#{est.idEstado}" />
<p:ajax event="change" listener="#{clienteController.carregarMunicipiosEndComercial()}" update="panel2" />
</p:selectOneMenu>
</div>
</div>
<p:outputPanel id="panel2">
<div class="control-group">
<h:outputLabel value="#{msgs.municipio}" styleClass="control-label" />
<div class="controls">
<p:selectOneMenu value="#{clienteController.idMunicipioComercial}">
<f:selectItems value="#{clienteController.listaMunicipioComercial}" var="munc2" itemLabel="#{munc2.municipio}"
itemValue="#{munc2.idMunicipio}" />
</p:selectOneMenu>
</div>
</div>
</p:outputPanel>
</p:tab>
<p:tab id="tab4" title="#{msgs.usuario}">
<div class="control-group">
<h:outputLabel value="#{msgs.usuario}" styleClass="control-label" />
<div class="controls">
<p:inputText value="#{clienteController.cliente.usuario.usuario}" styleClass="#{msgs.inputXLarge}"
required="true" requiredMessage="#{msgs.usuarioRequerido}" />
</div>
</div>
<div class="control-group">
<h:outputLabel value="#{msgs.senha}" styleClass="control-label" />
<div class="controls">
<p:password value="#{clienteController.senha1}" styleClass="#{msgs.inputXLarge}"
required="true" requiredMessage="#{msgs.senhaRequerido}" match="pwd2"
feedback="true" goodLabel="#{msgs.goodLabel}" weakLabel="#{msgs.weakLabel}"
strongLabel="#{msgs.strongLabel}" promptLabel="#{msgs.promptLabel}"
validatorMessage="#{msgs.cmpSenhaValidatorMsg}"/>
</div>
</div>
<div class="control-group">
<h:outputLabel value="#{msgs.repitaSenha}" styleClass="control-label" />
<div class="controls">
<p:password id="pwd2" value="#{clienteController.senha2}" styleClass="#{msgs.inputXLarge}"
required="true" requiredMessage="#{msgs.repitasenhaRequerido}" />
</div>
</div>
</p:tab>
</p:tabView>
<div class="form-actions">
<p:commandButton value="#{clienteController.labelAcaoBotao}" actionListener="#{clienteController.salvaAtualizar()}"
update=":form"/>
<p:commandButton value="Cancelar" styleClass="btn-normal" actionListener="#{clienteController.cancelarInsercao()}"
immediate="true" update=":form"/>
</div>
</fieldset>
</h:form>
</ui:define>
</ui:composition>
lista_cliente
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition template="template.xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">
<ui:define name="content">
<h:form id="form" styleClass="form-horizontal">
<fieldset>
<legend>#{msgs.cadastroCliente}</legend>
<p:growl id="growl" showDetail="true" autoUpdate="true" life="#{msgs.life}" />
<p:dataTable var="cli" value="#{clienteController.listaCliente}"
paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink}
{PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}">
<p:column filterBy="#{cli.nome}" filterMatchMode="contains">
<f:facet name="header">#{msgs.nome}</f:facet>
#{cli.nome}
</p:column>
<p:column>
<f:facet name="header">#{msgs.cpf}</f:facet>
#{cli.cpf}
</p:column>
<p:column>
<f:facet name="header">#{msgs.email}</f:facet>
#{cli.email}
</p:column>
<p:column style="width: 80px;">
<p:commandLink actionListener="#{clienteController.editarItem()}" >
<f:setPropertyActionListener value="#{cli}" target="#{clienteController.cliente}" />
<p:graphicImage value="../resources/imagens/edit.png" />
</p:commandLink>
<p:spacer width="10" />
<p:commandLink >
<p:graphicImage value="../resources/imagens/remove.png" />
</p:commandLink>
</p:column>
</p:dataTable>
</fieldset>
</h:form>
</ui:define>
</ui:composition>
Clientecontroller
package com.perfect.smile.controller;
import com.perfect.smile.bo.ClienteBO;
import com.perfect.smile.bo.EstadoBO;
import com.perfect.smile.bo.MunicipioBO;
import com.perfect.smile.entidade.Cliente;
import com.perfect.smile.entidade.Estado;
import com.perfect.smile.entidade.Municipio;
import com.perfect.smile.util.Constante;
import com.perfect.smile.util.JsfUtil;
import com.sun.faces.context.flash.ELFlash;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
/**
* @since 21/10/2012
* @author Cristian Urbainski
*/
@ManagedBean
@ViewScoped
public final class ClienteController implements Serializable {
private Cliente cliente;
private String labelAcaoBotao;
private String senha1;
private String senha2;
private Integer idEstadoResidemcial;
private Integer idEstadoComercial;
private Integer idMunicipioResidencial;
private Integer idMunicipioComercial;
private List<Municipio> listaMunicipioResidencial;
private List<Municipio> listaMunicipioComercial;
private List<Estado> listaEstado;
private List<Cliente> listaCliente;
public ClienteController() {
Integer parameter = (Integer) ELFlash.getFlash().get(Constante.CLIENT_EDIT);
if(parameter == null){
labelAcaoBotao = Constante.SALVAR;
cliente = new Cliente();
cliente.setSituacao(Constante.SITUACAO_ATIVO);
cliente.setSexo(Constante.SEXO_FEMININO);
} else {
labelAcaoBotao = Constante.ALTERAR;
try {
cliente = new ClienteBO().findById(parameter);
this.idEstadoResidemcial = this.cliente.getEnderecoresidencia().getMunicipio().getEstado().getIdEstado();
if(this.cliente.getEnderecotrabalho() != null){
this.idEstadoComercial = this.cliente.getEnderecotrabalho().getMunicipio().getEstado().getIdEstado();
}
} catch (Exception e) {
JsfUtil.mensagemErro(e);
e.printStackTrace(System.err);
}
}
try {
listaEstado = new EstadoBO().listEstados();
} catch (Exception e) {
JsfUtil.mensagemErro(e);
}
if(listaEstado == null) {
return;
}
if(idEstadoResidemcial == null) {
idEstadoComercial = listaEstado.get(0).getIdEstado();
idEstadoResidemcial = listaEstado.get(0).getIdEstado();
}
carregarMunicipiosEndComercial();
carregarMunicipiosEndResidencial();
this.idMunicipioResidencial = this.cliente.getEnderecoresidencia().getMunicipio().getIdMunicipio();
if(this.cliente.getEnderecotrabalho() != null){
this.idMunicipioComercial = this.cliente.getEnderecotrabalho().getMunicipio().getIdMunicipio();
}
}
public void salvaAtualizar(){
try {
this.cliente.getUsuario().setSenha(this.senha1);
if(this.cliente.getEnderecotrabalho().getRua().isEmpty() && this.cliente.getEnderecotrabalho().getBairo().isEmpty()) {
this.cliente.setEnderecotrabalho(null);
} else {
this.cliente.getEnderecotrabalho().getMunicipio().setIdMunicipio(idMunicipioComercial);
}
this.cliente.getEnderecoresidencia().getMunicipio().setIdMunicipio(idMunicipioResidencial);
if(this.cliente.getIdPessoa() == null) {
this.cliente.getConta().setDataultimomov(new Date());
this.cliente.getConta().setTipoultmov(Constante.MOVIMENTO_CREDITO_EM_CONTA);
this.cliente.getConta().setValor(BigDecimal.ZERO);
}
new ClienteBO().salvarAtualizar(cliente);
this.cliente = new Cliente();
JsfUtil.mostrarMensagem(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso", "Cliente gravado com sucesso."));
if(this.labelAcaoBotao.equals(Constante.ALTERAR)) {
JsfUtil.redirect("/faces/paginas/restrito/lista_cliente.xhtml");
} else {
JsfUtil.redirect("");
}
} catch (Exception e) {
e.printStackTrace(System.err);
JsfUtil.mensagemErro(e);
}
}
public void editarItem() {
System.out.println(this.cliente.getIdPessoa());
if(this.cliente.getIdPessoa() != null){
ELFlash.getFlash().put(Constante.CLIENT_EDIT, this.cliente.getIdPessoa());
JsfUtil.redirect("cadastro_cliente.xhtml");
}
}
public void cancelarInsercao() {
JsfUtil.redirect("cadastro_cliente.xhtml");
}
public void carregarMunicipiosEndResidencial() {
try {
listaMunicipioResidencial = new MunicipioBO().listMunicipio(idEstadoResidemcial);
this.idMunicipioResidencial = listaMunicipioResidencial.get(0).getIdMunicipio();
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(Constante.LISTA_MUNICIPIO_RESIDENCIAL, listaMunicipioResidencial);
} catch (Exception e) {
JsfUtil.mensagemErro(e);
}
}
public void carregarMunicipiosEndComercial() {
try {
if(idEstadoComercial == null) {
idEstadoComercial = this.listaEstado.get(0).getIdEstado();
}
listaMunicipioComercial = new MunicipioBO().listMunicipio(idEstadoComercial);
this.idMunicipioComercial = listaMunicipioComercial.get(0).getIdMunicipio();
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(Constante.LISTA_MUNICIPIO_COMERCIAL, listaMunicipioComercial);
} catch (Exception e) {
JsfUtil.mensagemErro(e);
}
}
public Integer getIdEstadoResidemcial() {
return idEstadoResidemcial;
}
public void setIdEstadoResidemcial(Integer idEstadoResidemcial) {
this.idEstadoResidemcial = idEstadoResidemcial;
}
public Integer getIdEstadoComercial() {
return idEstadoComercial;
}
public void setIdEstadoComercial(Integer idEstadoComercial) {
this.idEstadoComercial = idEstadoComercial;
}
public List<Municipio> getListaMunicipioResidencial() {
return listaMunicipioResidencial;
}
public void setListaMunicipioResidencial(List<Municipio> listaMunicipioResidencial) {
this.listaMunicipioResidencial = listaMunicipioResidencial;
}
public List<Municipio> getListaMunicipioComercial() {
return listaMunicipioComercial;
}
public void setListaMunicipioComercial(List<Municipio> listaMunicipioComercial) {
this.listaMunicipioComercial = listaMunicipioComercial;
}
public List<Estado> getListaEstado() {
return listaEstado;
}
public void setListaEstado(List<Estado> listaEstado) {
this.listaEstado = listaEstado;
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public String getLabelAcaoBotao() {
return labelAcaoBotao;
}
public void setLabelAcaoBotao(String labelAcaoBotao) {
this.labelAcaoBotao = labelAcaoBotao;
}
public String getSenha1() {
return senha1;
}
public void setSenha1(String senha1) {
this.senha1 = senha1;
}
public String getSenha2() {
return senha2;
}
public void setSenha2(String senha2) {
this.senha2 = senha2;
}
public Integer getIdMunicipioResidencial() {
return idMunicipioResidencial;
}
public void setIdMunicipioResidencial(Integer idMunicipioResidencial) {
this.idMunicipioResidencial = idMunicipioResidencial;
}
public Integer getIdMunicipioComercial() {
return idMunicipioComercial;
}
public void setIdMunicipioComercial(Integer idMunicipioComercial) {
this.idMunicipioComercial = idMunicipioComercial;
}
public List<Cliente> getListaCliente() {
if(this.listaCliente == null) {
try {
this.listaCliente = new ClienteBO().findAll();
} catch (Exception e) {
JsfUtil.mensagemErro(e);
e.printStackTrace(System.err);
}
}
return listaCliente;
}
public void setListaCliente(List<Cliente> listaCliente) {
this.listaCliente = listaCliente;
}
}
Qualquer ajuda é muito bem vinda, desde ja muito obrigado…