VRaptor - Mostrar msg de erro

6 respostas
von.juliano

Pessoal, tenho o seguinte método na minha Logic:

@Validate(params = "colaborador") public String login(Colaborador colaborador) throws LogicException { try { this.colaborador = service.login(colaborador); if (this.colaborador == null) { return "invalid"; } return "ok"; } catch (ServiceException e) { throw new LogicException(e); } }Minha dúvida é, se o colaborador for nulo, como posso enviar uma mensagem para o usuário? Eu valido se os atributos dele são válidos com as annotations, o que facilita isso, mas não sei como fazê-lo no caso dele ser nulo.

Vlw! :thumbup:

6 Respostas

K

cara não manjo mto do assunto… acho que você poderia redirecionar pra uma página de erro configurando o view.properties:

espero q ajude em algo

Abraço!

von.juliano

Oi keyboarder, acho que você entendeu mal cara, o problema não é redirecionar para a página de erro, mas como passar para ela a mensagem de erro, no caso, a key do message.properties. No caso do Hibernate Validator, eu só preciso fazer assim para validar:

@NotEmpty(message = "login.empty") private String login;E para mostrar para o usuário:

<c:forEach var="error" items="${errors.iterator}"> <li><fmt:message key="${error.key}"/></li> </c:forEach>O que vai mostrar a mensagem apropriada, do meu message.properties. Mais alguma sugestão?

Vlw! :thumbup:

K

hum… acho q entendi hehe

Não sei se é uma boa solução, mas…

No projeto que estou trabalhando, precisávamos exibir algumas mensagens ao usuário… uma solução que encontrei foi colocar uma variavel List com as mensagens dentro do controller e ejetá-la no escopo da sessão… depois recupero esse atributo no jsp e exibo como mensagem ao usuário. Mais ou menos assim:

@Out(scope=ScopeType.SESSION) private List<String> controllerMessagesAndExceptions;

Abraço!

Pedrosa

http://www.vraptor.com.br/forum/forums/list.page

von.juliano

Ae Fábio, é aí mesmo que estou pesquisando!
Consegui validar quase da forma que eu queria. Usei junto ao Hibernate Validator a validação do VRaptor:

@Validate(params = "colaborador") public String validateLogin(ValidationErrors errors, Colaborador colaborador) throws LogicException { try { this.colaborador = service.login(colaborador); if (this.colaborador == null) { errors.add(new Message("usuario", "usuario.invalido")); return "invalid"; } return "ok"; } catch (EwsException e) { throw new LogicException(e); } }O único problema é que ele sempre envia a msg de usuario ou senha inválida, e eu queria que ele só validasse isso após validar se os campos anotados do colaborador. :wink:

von.juliano

Só completando, o problema é que dessa forma, ele faz a busca no banco com os campos vazios. :roll:

Criado 20 de janeiro de 2009
Ultima resposta 20 de jan. de 2009
Respostas 6
Participantes 3