Pessoal,
Preciso de uma ajuda num formulario de cadastro onde meu campo cep preenche automaticamente outros campos do tipo: bairro, UF e logradouro. Mas quando tento gravar e acontece algum erro de validação no campo de confirmação de senha, esses campos que estavam preenchidos ficam em branco. O que pode estar errado? Como posso mante-los preenchidos mesmo com atualização da página através do update?
Segue me codigo do XHTML
<p:panel toggleable="true" header="Endereço Cliente">
<h:panelGrid id="gridCep" columns="3" columnClasses="labelPanelGrid, contentPanelgrid" rowClasses="">
<h:outputLabel value="#{msgs['label.cep']}" for="cep" />
<p:inputText id="cep" value="#{cadastroClientePFBean.cep.numCep}" required="true" requiredMessage="#{msgs['campo.obrigatorio']}"
maxlength="8" tabindex="3">
<p:ajax event="blur" listener="#{cadastroClientePFBean.recuperarCep}"
update="logradouro, bairro, cidade, uf, mensagemCep"/>
</p:inputText>
<p:message id="mensagemCep" for="cep" />
</h:panelGrid>
<h:panelGrid columns="3" columnClasses="labelPanelGrid, contentPanelgrid" rowClasses="">
<h:outputLabel value="#{msgs['label.logradouro']}" for="logradouro" />
<p:inputText id="logradouro" required="true" value="#{cadastroClientePFBean.cep.nomeLogradouro}"
readonly="true" immediate="true" requiredMessage="#{msgs['campo.obrigatorio']}"/>
<p:message for="logradouro" />
</h:panelGrid>
<h:panelGrid columns="3" columnClasses="labelPanelGrid, contentPanelgrid" rowClasses="">
<h:outputLabel value="#{msgs['label.numero']}" for="numero" />
<p:inputText id="numero"
value="#{cadastroClientePFBean.endereco.numeroLogradouro}" maxlength="20" tabindex="4"/>
<p:message for="numero" />
</h:panelGrid>
<h:panelGrid columns="3" columnClasses="labelPanelGrid, contentPanelgrid" rowClasses="">
<h:outputLabel value="#{msgs['label.complemento']}" for="complemento" />
<p:inputText id="complemento"
value="#{cadastroClientePFBean.endereco.complemento}" maxlength="40" tabindex="5"/>
<p:message for="complemento" />
</h:panelGrid>
<h:panelGrid columns="3" columnClasses="labelPanelGrid, contentPanelgrid" rowClasses="">
<h:outputLabel value="#{msgs['label.bairro']}" for="bairro" />
<p:inputText id="bairro" required="true" readonly="true"
value="#{cadastroClientePFBean.cep.bairroinicial.nomebairro}" requiredMessage="#{msgs['campo.obrigatorio']}"/>
<p:message for="bairro" />
</h:panelGrid>
<h:panelGrid columns="3" columnClasses="labelPanelGrid, contentPanelgrid" rowClasses="">
<h:outputLabel value="#{msgs['label.cidade']}" for="cidade" />
<p:inputText id="cidade" required="true" readonly="true" requiredMessage="#{msgs['campo.obrigatorio']}"
value="#{cadastroClientePFBean.cep.bairroinicial.localidade.nomeLocalidade}"/>
<p:message for="cidade" />
</h:panelGrid>
<h:panelGrid columns="3" columnClasses="labelPanelGrid, contentPanelgrid" rowClasses="">
<h:outputLabel value="#{msgs['label.uf']}" for="uf" />
<p:inputText id="uf" required="true" readonly="true" requiredMessage="#{msgs['campo.obrigatorio']}"
value="#{cadastroClientePFBean.cep.bairroinicial.localidade.uf.nomeUf}"/>
<p:message for="uf" />
</h:panelGrid>
</p:panel>
<p:panel toggleable="true" header="Dados Login">
<h:panelGrid id="gridLogin" columns="3" columnClasses="labelPanelGrid, contentPanelgrid" rowClasses="">
<h:outputLabel value="#{msgs['label.login']}" for="login" />
<p:inputText id="login" required="true" requiredMessage="#{msgs['campo.obrigatorio']}"
value="#{cadastroClientePFBean.login.login}" maxlength="10" tabindex="10" >
<p:ajax event="blur" listener="#{cadastroClientePFBean.verificarLogin}" update="login, mensagemLogin" />
</p:inputText>
<p:message id="mensagemLogin" for="login" />
</h:panelGrid>
<h:outputText value="#{msg}" />
<h:panelGrid columns="3" columnClasses="labelPanelGrid, contentPanelgrid" rowClasses="">
<h:outputLabel value="#{msgs['label.email']}" for="email" />
<p:inputText id="email" required="true" requiredMessage="#{msgs['campo.obrigatorio']}"
value="#{cadastroClientePFBean.login.email}" tabindex="11">
<f:validator validatorId="br.com.montreal.validaEmail"/>
</p:inputText>
<p:message for="email" />
</h:panelGrid>
<h:panelGrid columns="3" columnClasses="labelPanelGrid, contentPanelgrid" rowClasses="">
<h:outputLabel value="#{msgs['label.senha']}" for="senha" />
<h:inputSecret id="senha" required="true" requiredMessage="#{msgs['campo.obrigatorio']}" immediate="true"
value="#{cadastroClientePFBean.login.senha}" tabindex="12">
</h:inputSecret>
<p:message for="senha" />
</h:panelGrid>
<h:panelGrid columns="3" columnClasses="labelPanelGrid, contentPanelgrid" rowClasses="">
<h:outputLabel value="#{msgs['label.confirmar.senha']}" for="confirmarSenha" />
<h:inputSecret id="confirmarSenha" value="#{cadastroClientePFBean.senhaConfirmada}" immediate="true"
required="true" requiredMessage="#{msgs['campo.obrigatorio']}" tabindex="13" />
<p:message id="mensagemConfirmaSenha" for="confirmarSenha" />
</h:panelGrid>
</p:panel>
<p:commandButton action="#{cadastroClientePFBean.salvarCliente}" value="cadastrar" update="@form"/>
<p:commandButton value="Cancelar" action="#{cadastroClientePFBean.cancelar}" />
Meu codigo do ManagedBean
@ManagedBean(name="cadastroClientePFBean")
@RequestScoped
public class CadastroClientePFBean extends BaseManagedBean implements Serializable{
private static final long serialVersionUID = 1L;
@Inject
ICepEjb cepEjb;
@Inject
ILoginEjb loginEjb;
@Inject
ICadastroClienteEjb cadastroClienteEjbLocal;
private Cep cep = new Cep();
private Usuario usuario = new Usuario();
private Endereco endereco = new Endereco();
private Login login = new Login();
private String senhaConfirmada;
public void recuperarCep(){
try {
Cep novoCep = cepEjb.buscarCepPorNumero(cep.getNumCep());
if(null != novoCep){
setCep(novoCep);
}else{
FacesContext.getCurrentInstance().addMessage("cep", new FacesMessage(FacesMessage.SEVERITY_WARN, "O Cep não foi encontrado!", null));
}
} catch (DaoExcecao e) {
e.printStackTrace();
}
}
public boolean verificarSenhaDigitada() {
boolean senhaConfere = false;
if (!login.getSenha().equals(senhaConfirmada)) {
senhaConfere = false;
FacesContext.getCurrentInstance().addMessage("confirmarSenha", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Senha redigitada incorretamente. Favor corrigi-la.", null));
} else {
senhaConfere = true;
}
return senhaConfere;
}
public String salvarCliente() throws DaoExcecao {
if (!verificarLogin() && verificarSenhaDigitada()) {
cadastroClienteEjbLocal.cadastrarPF(usuario, login, endereco, cep, "1");
FacesContext.getCurrentInstance().addMessage("formLogin", new FacesMessage(FacesMessage.SEVERITY_WARN, "Cliente cadastrado com sucesso!", null));
return "sucesso";
}
return null;
}
}