@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.
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
keyboarder
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:
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.
von.juliano
Só completando, o problema é que dessa forma, ele faz a busca no banco com os campos vazios. :roll: