sábado, 5 de dezembro de 2009

Erro Valor Inválido na Tag "h:selectOneMenu"


Um erro no Seam/JSF quando a pessoa tenta preencher um combo box com um objeto persistente. Não aparece nenhuma stack trace, apenas uma mensagenzinha de erro "Valor Inválido".

    O cenário é o seguinte: Você carregou sua lista de objetos entidades (@Entity) em um combo box usando h:selectOneMenu. Quando foi fazer um submit, apareceu a mensgem "valor inválido" ou "javax.faces.component.UISelectOne.INVALID". Ai você surtou porque o console não mostra nenhum outro erro.

    O problema acontece antes de chegar no seu bean/action e você nem sabe por onde começar a debugar. Ja tentou de tudo.

   Faça o seguinte: Implemente o equals e o hashCode nas suas classes de persistência. Pronto. Milagrosamente está tudo resolvido.
    Vale lembrar que o Hibernate recomenda fortemente que estes métodos sejam implementados. Tem como fazer o sistema sem isso se você não estiver usando o Seam, mas você acabará tento problemas