Estou tentado usar um comboBox no cadastro de cliente, preenchendo o mesmo com as cidades cadastradas, mais está dando um erro e não encontro solucão.
Se alguem puder ajudar eu agradeco.
Segue o erro:
INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=CadCliente:cidadeComboBox[severity=(ERROR 2), summary=({0}: Conversion error occurred.), detail=({0}: Conversion error occurred.)]
Segue o Codigo:
JSP
<tr>
<td><h:outputText value="Cidade" /></td>
<td><rich:comboBox id="cidadeComboBox"
defaultLabel="-Selecione a Cidade-" enableManualInput="false"
width="200px;" value="#{clienteHandler.cliente.cidade}"
requiredMessage=">> Selecione a Cidade">
<f:selectItems value="#{cidadeHandler.cidadesParaComboBox}" />
</rich:comboBox></td>
</tr>
Bean CidadeHandler
public List<SelectItem> getCidadesParaComboBox() {
List<SelectItem> lista = new ArrayList<SelectItem>();
CidadeHandler handler = pegaCidadeHandler();
for (Cidade c : handler.getcidades()) {
lista.add(new SelectItem(c.getNome(), c.getId().toString()));
}
return lista;
}
private CidadeHandler pegaCidadeHandler () {
FacesContext facesContext = FacesContext.getCurrentInstance();
ELContext elContext = facesContext.getELContext();
ELResolver resolver = facesContext.getApplication().getELResolver();
Object ch = resolver.getValue(elContext, null, "cidadeHandler");
return (CidadeHandler) ch;
}
Bean ClienteHandler
public void salva() {
try {
System.out.println("Adicionando: " + cliente.getNome());
Session session = HibernateUtil.currentSession();
Dao<Cliente> dao = new Dao<Cliente>(session, Cliente.class);
dao.merge(this.cliente);
this.mensagem = "Cliente " + cliente.getNome() + " adicionado com Sucesso.";
this.cliente = new Cliente();
} catch(Exception e) {
this.mensagem = "Erro ao inserir cliente, tente novamente !";
}
}
Atributo na Classe Cliente
@ManyToOne
@JoinColumn(name="cidade_cli", nullable=true)
private Cidade cidade;