Maldito seja a mensagem de erro “[color=red]Validation Error: Value is not valid[/color]” :lol:
será que alguem já passou por essa situação:
possuo uma lista de Participante (um objeto que criei) e quero selecionar um item desta lista e colocar em um atributo do tipo Participante de outro objeto.
oque eu fiz: coloquei um h:selectOneMenu para selecionar um objeto desta lista e settar no atributo do outro objeto
tenho um conversor para este Participante que funciona corretamente
sobreescrevi o metodo equals e hashcode do Participante
o problema é o seguinte:
como estou usando @RequesScoped eu perco a lista de Participante (não sei pq) e dae ele dá aquele erro chato (Validation Error: Value is not valid)
alguem sabe como não perder esta lista? ou como desativar essa validação do JSF
OBS.: só posso usar @RequestScoped
obrigado pessoal
um abraço
[size=24]RESOLVIDO (todos os problemas da minha vida :lol: )[/size]
Usei PhaseListener, aprendi sobre o assunto com o livro “the complete reference JSF 2.0” e aqui: http://www.guj.com.br/java/53225-explicacao-sobre-phaselistener
Criei uma implementação de PhaseListener:
sempre q executar a página “TornarUsuarioGerenteDeParticipantes.xhtml” antes de validar o formulario
irá executar o método “tornarUsuarioGerenteDeParticipantes.carregarUsuario”, neste método eu recarrego meu objeto e com a lista que eu estava perdendo
public class TornarUsuarioGerenteDeParticipantesPL implements PhaseListener{
private final static String pagina = "/TornarUsuarioGerenteDeParticipantes.xhtml";
@Override
public void beforePhase(PhaseEvent event) {
String nomeDoMetodo = "#{tornarUsuarioGerenteDeParticipantes.carregarUsuario()}";
String paginaAcessada = event.getFacesContext().getViewRoot().getViewId();
if (pagina.indexOf(paginaAcessada) > -1) {
event.getFacesContext().getApplication().createMethodBinding(nomeDoMetodo, new Class[] {}).invoke(event.getFacesContext(), new Object[] {});
}
}
@Override
public void afterPhase(PhaseEvent event) {
//faz nada
}
@Override
public PhaseId getPhaseId() {
return PhaseId.PROCESS_VALIDATIONS;
}
}
Declarei no FacesConfig:
<lifecycle>
<phase-listener>meupackage.TornarUsuarioGerenteDeParticipantesPL</phase-listener>
</lifecycle>
qualquer dúvida posta ae que eu respondo