pessoal estou com um problema para pegar o valor de um select one menu no jsf
para construir os SelectItem eu botei o nome da cidade de label e de valor o proprio objeto. Estou usando o db4o de banco de dados.
até ai tudo bem funciona, mostra certinho na tela.
private ArrayList construirListaCidades() {
ArrayList lista = new ArrayList();
Banco banco = null;
Cidade cidade;
ObjectSet resultado = Banco.getObjectContainer().get(Cidade.class);
while(resultado.hasNext()) {
cidade = (Cidade)resultado.next();
SelectItem item = new SelectItem(cidade, cidade.getNome());
lista.add(item);
}
return lista;
}
o valor no codigo fonte html fica mais ou menos assim:
[code]São Paulo
Blumenau Porto Alegre[/code] que eu acho que é uma valor para referencia do objetono jsf eu botei assim:
<h:selectOneMenu binding="#{bairro$cadBairro.cidade}" id="cidade" style="left: 12px; top: 12px; position: absolute">
<f:selectItems binding="#{bairro$cadBairro.variosItens}" id="variosItens" value="#{bairro$cadBairro.listaCidades}"/>
</h:selectOneMenu>
o problema está quando eu quero recuperar este valor, por exemplo eu to fazendo um cadastro de bairros e dai tem que selecionar a cidade pois na classe bairro tem um atributo cidade do tipo Cidade. Então eu botei o proprio objeto cidade de valor no select e quando vou recuperar o valor da cidade selecionada através do codigo:
Cidade c = (Cidade)cidade.getValue();
acontece isso
sourceId=form1:cidade[severity=(ERROR 2), summary=(form1:cidade: Validation Error: Value is not valid), detail=(form1:cidade: Validation Error: Value is not valid)]
o que pode ser? será que não posso usar o proprio objeto como value para o item? qual seria a solução? já que na classe Cidade eu não tenho nenhum código ou campo identificador para os objetos Cidade…
obrigado, abraços