Vraptor + Hibernate Validator + personalisar mensagens

5 respostas
cleitonmoura18

galera esou usando validator.validate(objeto);
e gostaria de passar parametros para a mensagem de validação para poder pesranalisar as mensagens, esses parametros viriam do label.
tipo:

pessoa.Nome=Name campo.obrigatorio=O campo {value} é obrigatório ser preenchido.
Gostaria que a menssagem fica-se asim

5 Respostas

Lucas_Cavalcanti

pra isso funcionar você teria que personalizar a forma com que o BeanValidations monta as mensagens…

não tem um jeito muito fácil de colocar o campo que deu erro dentro da mensagem, mas você consegue fazer as validações de @NotNull, @NotEmpty, etc darem a msg campo.obrigatorio.

Edifran

Lucas, boa tarde

Eu estou procurando algo desse tipo, acho que é praticamente a mesma dúvida do cleitonmoura18, pelo que entendi o BeanValidations pega o atributo anotado com @NotNull, @NotEmpty, etc, etc e concatena com o valor da key no arquivo properties, isso?

@NotNull
    @Column(name = "NOME")
    private String nome;

Para esse caso por exemplo viria uma mensagem “nome - não pode ser nulo”, caso o campo nome não seja preenchido.
Mas no meu form este campo nome pode ter por exemplo o label “Nome do Cliente”, de alguma forma tem como eu fazer a mensagem ficar “Nome do Cliente - não pode ser nulo”?

Imaginei que poderia ter algo desse tipo (não sei se posso)

@NotNull (nameLabel = "Nome do Cliente")
    @Column(name = "NOME")
    private String nome;

e no properties eu alteraria para concatenas esse nameLabel

Se puder me dar umas dicas, obrigado.

Lucas_Cavalcanti

vc pode fazer isso na hora de mostrar as mensagens no jsp… com a tag <fmt:message:

<c:forEach items="${errors}" var="error">
    <fmt:message key="cliente.${error.category}"/> - 
    ${error.message}
</c:forEach>
Edifran

Obrigado Lucas, já fiz um teste aqui, vai funcionar, eu só preciso definir um padrão porque quero ter um arquivo genérico para os erros, então eu preciso fazer no meu properties algo do tipo

nomeCliente=Nome do Cliente
nomeFornecedor=Nome do Fornecedor
nomeProduto=Nome do Produto

e por aí vai…

Obrigado

Lucas_Cavalcanti

ao invés de fazer isso, faça as chaves assim:

cliente.nome = ....
cliente.email = ...

fornecedor.nome = ...
fornecedor.endereco = ...

daí dá pra vc usar o código que eu tinha passado, o do fmt:message.

Criado 6 de fevereiro de 2012
Ultima resposta 3 de set. de 2012
Respostas 5
Participantes 3