[Resolvido] Duvida sobre JSF e entidades com metodo toString. (JSF 2.0 + Primefaces 2.2)
19 respostas
shadowzaum
Espero que essa duvida alguem me responda, pois as ultimas duas só renderam visualizações.
Bom, estou com uma entidade que tem o metodo toString(), que alterei para mostrar apenas um atributo.
A minha duvida é a seguinte, no caso abaixo. Quando indico o “users” como label e value, ele não deveria retornar o metodo toString()? Ou obrigatoriamente tenho que passar algo para ele retornar?
Sim, dualListProjetos é uma lista de usuarios. Na realidade é uma lista “dupla” de usuario, é coisa do primefaces.
O nome ficou meio confuso, mas é sim.
E sim, fiz do jeito que você falou, com toString(), passando diretamente um atributo String do usuario. Enfim, tentei varias coisas diferentes. Mas no final ou ele da erro na hora de salvar ou na hora de mostrar.
E
erickfm8
Debug e ve exatamente a linha que está dando erro
shadowzaum
Não sei se vai ajudar na sua visão ai do projeto. Mas aqui no outro tópico, tenho maior parte do código.
Guilherme_Gomes
Ele vai usar o toString mesmo.
O problema é que ele não sabe como retornar aquele valor String de volta para um objeto Usuário. Afinal, ele não tem informações suficientes para isso.
Você deve usar um conversor pra isso, da uma olhadinha aqui
shadowzaum
Beleza, vou dar uma olhada. Caso resolva, você resolveu dois dias de dor de cabeça em 3 linhas.
Valeu a ajuda ai galera, agora vou entender como fazer esse conversor e então posto os resultados.
E
erickfm8
faz um teste ai.
itemLabel="#{users.nome}"
itemValue="#{users}"
shadowzaum
erickfm8:
faz um teste ai.
itemLabel="#{users.nome}"
itemValue="#{users}"
Já fiz, como havia dito. E continua dando o mesmo erro. Vou tentar usar o converter que o Guilherme Gomes falou.
rafaelvascon
Posta aí a parte do código em que o dualListProjetos é declarado.
shadowzaum
Abaixo o código, vou botar com todas as annotations.
publicclassProjetoControllerextendsBaseController{@EJBprivateProjetoServiceprojetoService;@EJBprivateUsuarioServiceusuarioService;privateListDataModel<Projeto>projetos;privateProjetoprojeto=newProjeto();privateDualListModel<Usuario>dualListProjetos;privateList<Usuario>target;privateList<Usuario>source;publicvoidsetDualListProjetos(DualListModel<Usuario>dualListProjetos){this.dualListProjetos=dualListProjetos;}publicDualListModel<Usuario>getDualListProjetos(){if(projeto.getUsuarios()==null){this.target=newArrayList<Usuario>();}elsethis.target=projeto.getUsuarios();this.source=usuarioService.listAll();this.source.removeAll(this.target);dualListProjetos=newDualListModel<Usuario>(source,target);returndualListProjetos;}// getters and setters}
Agora presta atenção que ele usa um converter, e isso pode ser o jogo.
shadowzaum
Realmente é o converter. Cara, pior é que no exemplo tinha e eu “tirei” achando que não era nada demais.
Agora é trabalhar em cima do converter no meu projeto aqui, já fiz ele por cima e nem testei, amanhã quando chegar no trampo eu faço ele direito.
E rafaelvascon, valeu pelos links. O showcase já conhecia, utilizo bastante junto do guide do primefaces. Mas o outro dos exemplos completos eu não conhecia, realmente vai ser de grande ajuda daqui pra frente.
Valeu a todos que ajudaram ai, e desculpa qualquer coisa.