Bom dia Pessoal, novamente estou aqui para pedir ajuda de voces.
Tenho o html abaixo
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:body>
<div class="separador"> </div>
<p:outputPanel styleClass="boxW300" id="boxFisicoNome">
<h:outputLabel value="Nome" for="fisicoNome" title="Nome" styleClass="obrigatorio w300 lblDescCampo campoTipoClienteFisico" />
<p:inputText id="fisicoNome" label="Nome" value="#{ClienteCadastroBean.cliente.nome}" maxlength="100" required="true" requiredMessage="#{MensagemBean.mensagemFormulario}" styleClass="w300" />
</p:outputPanel>
<div class="separador"> </div>
<p:outputPanel styleClass="boxW200" id="boxFisicoCPF">
<h:outputLabel value="CPF" for="fisicoCPF" title="CPF" styleClass="obrigatorio w200 lblDescCampo" />
<p:inputMask id="fisicoCPF" label="CPF" mask="[CPF removido]" value="#{ClienteCadastroBean.cliente.cnpf}" required="true" requiredMessage="#{MensagemBean.mensagemFormulario}" styleClass="w200">
<p:ajax event="blur" listener="#{ClienteCadastroBean.ValidaCPF}" update="boxMensagemValidacao"/>
</p:inputMask>
</p:outputPanel>
<div class="separador"> </div>
<p:outputPanel styleClass="boxW200" id="boxFisicoRG">
<h:outputLabel value="RG" for="fisicoRG" title="RG" styleClass="w200 lblDescCampo" />
<p:inputText id="fisicoRG" label="RG" value="#{ClienteCadastroBean.cliente.rgInscEstadual}" maxlength="10" styleClass="w200"/>
</p:outputPanel>
<p:outputPanel styleClass="boxW300" id="boxFisicoEndereco">
<h:outputLabel value="Endereço" for="fisicoEndereco" title="Endereço" styleClass="obrigatorio w300 lblDescCampo" />
<p:inputText id="fisicoEndereco" label="Endereco" value="#{ClienteCadastroBean.endereco.rua}" styleClass="w300" required="true" requiredMessage="#{MensagemBean.mensagemFormulario}" maxlength="100"/>
</p:outputPanel>
<div class="separador"> </div>
<p:outputPanel styleClass="boxW150" id="boxFisicoNumero">
<h:outputLabel value="Número" for="fisicoNumero" title="Número" styleClass="obrigatorio w150 lblDescCampo" />
<p:inputText id="fisicoNumero" label="Numero" value="#{ClienteCadastroBean.endereco.numero}" styleClass="w150 numeric" required="true" requiredMessage="#{MensagemBean.mensagemFormulario}"/>
</p:outputPanel>
<div class="separador"> </div>
<p:outputPanel styleClass="boxW150" id="boxFisicoBairro">
<h:outputLabel value="Bairro" for="fisicoBairro" title="Bairro" styleClass="obrigatorio w150 lblDescCampo" />
<p:inputText id="fisicoBairro" label="Bairro" value="#{ClienteCadastroBean.endereco.bairro}" styleClass="w150" required="true" requiredMessage="#{MensagemBean.mensagemFormulario}" />
</p:outputPanel>
<div class="separador"> </div>
<p:outputPanel styleClass="boxW300" id="boxFisicoComplemento">
<h:outputLabel value="Complemento" for="fisicoComplemento" title="Complemento" styleClass="w300 lblDescCampo" />
<p:inputText id="fisicoComplemento" label="Complemento" value="#{ClienteCadastroBean.endereco.complemento}" styleClass="w300" maxlength="100"/>
</p:outputPanel>
<p:outputPanel styleClass="boxW75" id="boxFisicoCep">
<h:outputLabel value="Cep" for="fisicoCep" title="Cep" styleClass="obrigatorio w75 lblDescCampo" />
<p:inputMask id="fisicoCep" label="Cep" value="#{ClienteCadastroBean.endereco.cep}" styleClass="w75" required="true" requiredMessage="#{MensagemBean.mensagemFormulario}" mask="99999-999"/>
</p:outputPanel>
<div class="separador"> </div>
<p:outputPanel styleClass="boxW200" id="boxFisicoEstado">
<h:outputLabel value="Estado" for="fisicoEstado" title="Estado" styleClass="obrigatorio w175 lblDescCampo" />
<h:selectOneMenu id="fisicoEstado" value="#{ClienteCadastroBean.estadoID}" styleClass="w175" required="true" requiredMessage="#{MensagemBean.mensagemFormulario}">
<f:selectItem itemLabel="#{MensagemBean.textoSelecione}" itemValue="" noSelectionOption="true"/>
<f:selectItems value="#{EstadoListagemBean.listaEstado}" var="estado" itemLabel="#{estado.nome}" itemValue="#{estado.estadoID}"/>
<p:ajax update="fisicoCidade" listener="#{ClienteCadastroBean.ListaCidadaPorEstado}"/>
</h:selectOneMenu>
</p:outputPanel>
<div class="separador"> </div>
<p:outputPanel styleClass="boxW250" id="boxFisicoCidade">
<h:outputLabel value="Cidade" for="fisicoCidade" title="Cidade" styleClass="obrigatorio w250 lblDescCampo" />
<h:selectOneMenu id="fisicoCidade" value="#{ClienteCadastroBean.endereco.cidade}" converter="CidadeConverter" styleClass="w250" required="true" requiredMessage="#{MensagemBean.mensagemFormulario}">
<f:selectItem itemLabel="#{MensagemBean.textoSelecione}" itemValue="" noSelectionOption="true"/>
<f:selectItems value="#{ClienteCadastroBean.listaCidades}" var="cidade" itemLabel="#{cidade.nome}" itemValue="#{cidade}" />
</h:selectOneMenu>
</p:outputPanel>
<div class="separador"> </div>
<p:outputPanel styleClass="boxW200" id="boxFisicoTelefone">
<h:outputLabel value="Telefone" for="fisicoTelefone" title="Telefone" styleClass="w200 lblDescCampo" />
<p:inputMask id="fisicoTelefone" label="Telefone" value="#{ClienteCadastroBean.contato.telefone}" styleClass="w200" mask="([telefone removido]" />
</p:outputPanel>
<div class="separador"> </div>
<p:outputPanel styleClass="boxW150" id="boxFisicoCelular">
<h:outputLabel value="Celular" for="fisicoCelular" title="Celular" styleClass="w150 lblDescCampo" />
<p:inputMask id="fisicoCelular" label="Celular" value="#{ClienteCadastroBean.contato.celular}" styleClass="w150" mask="([telefone removido]" />
</p:outputPanel>
<p:outputPanel styleClass="boxW300" id="boxFisicoEmail">
<h:outputLabel value="Email" for="fisicoEmail" title="Email" styleClass="w300 lblDescCampo" />
<p:inputText id="fisicoEmail" label="Email" value="#{ClienteCadastroBean.contato.email}" styleClass="w300" maxlength="100">
<p:ajax event="blur" listener="#{ClienteCadastroBean.ValidaEmail}" update="boxMensagemValidacao"/>
</p:inputText>
</p:outputPanel>
<div class="separador"> </div>
<p:outputPanel styleClass="boxW300" id="boxFisicoVoip">
<h:outputLabel value="Voip" for="fisicoVoip" title="Voip" styleClass="w300 lblDescCampo" />
<p:inputText id="fisicoVoip" label="Voip" value="#{ClienteCadastroBean.contato.voip}" styleClass="w300" maxlength="100"/>
</p:outputPanel>
<div class="separador"> </div>
<p:outputPanel styleClass="boxW200" id="boxFisicoStatus">
<h:outputLabel value="Status" for="fisicoStatus" title="Status" styleClass="obrigatorio w200 lblDescCampo" />
<h:selectOneMenu id="fisicoStatus" value="#{ClienteCadastroBean.cliente.status}" title="Status" styleClass="w200" required="true" requiredMessage="#{MensagemBean.mensagemFormulario}">
<f:selectItem itemLabel="#{MensagemBean.textoSelecione}" itemValue="" />
<f:selectItems value="#{ProjetoBean.status}"/>
</h:selectOneMenu>
</p:outputPanel>
</h:body>
</html>
ao fazer submit do formulario está sendo gerado o seguinte erro
Cadastro:fisicoCidade: Erro de validação: o valor não é válido.
Para tentar resolver o problema já sobreescrevi os hashCode e equals da classe Endereco e Cidade, mas não funcionou.
Abaixo segue a minha classe converter
public class CidadeConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if ( (value != null) && (value.trim().length() > 0) && (!value.equals(GlossarioTexto.getInstance().getSelecione())) && (!value.equals(GlossarioMensagens.getInstance().getMSG12())) ) {
Integer cidadeID = Integer.valueOf(value);
try {
CidadeRN cidadeRN = new CidadeRN();
Cidade cidade = new Cidade();
cidade.setCidadeID(cidadeID);
cidade = cidadeRN.Obter(cidade);
return cidade;
} catch (Exception e) {
throw new ConverterException("Erro ao efetuar a conversão da classe cidade" + value + "." + e.getMessage());
}
}
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if( (value != null) && (!value.equals("")) ){
if (value instanceof Cidade) {
Cidade cidade = (Cidade) value;
return cidade.getCidadeID().toString();
}else{
CidadeRN cidadeRN = new CidadeRN();
Cidade cidade = new Cidade();
cidade.setCidadeID(Integer.parseInt(value.toString()));
cidade = cidadeRN.Obter(cidade);
return cidade.getCidadeID().toString();
}
}
return null;
}
}
Alguem tem mais alguma ideia ?
Att