Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Desenvolvimento Java Web com VRaptor 4 - Mensagem de Erro do arquivo messages.propierties

Estou um pouco confuso com as mensagens de erro, por exemplo, em que lugar eu coloco a chave que é identificada no arquivo messages.propierties, depois de configura-la onde devo colocá-la? E depois como chamá-la? Estou um pouco confuso e não consegui identificar.

5 respostas

Olá Guilherme! Primeiramente, o nome do arquivo é messages.properties.

Esse arquivo, guarda as mensagens ligadas a uma chave. Isso facilita para traduções nos sistemas, sendo que só alterando o arquivo de mensagens basta. Uma maneira de utilizá-lo no validator é adicionar uma mensagem. Esta pode ser de diversos formatos. O tipo message, você passa uma I18nMessage. Neste você passa uma categoria e a chave que esta lá no arquivo.

Ex: messages.properties

mensagem.teste = Isso é uma mensagem de teste

Controller

if(true){
    //Adiciona uma chave de mensagem
    validator.add(new I18nMessage("erro", "mensagem.teste"));
    //Se der erro, encaminha pra algum lugar. Nessa caso o formulario
    validator.onErrorForwardTo(this).formulario();
}

Certo, e eai como recebo isso na jsp? E se tiver mais de um erro?

solução!

Você deve fazer um <c:foreach percorrendo e mostrando todos os erros dessa forma:

//A variável retornada pelo validator sempre será errors
<c:forEach var="error" items="${errors}">
    /*category é o "erro" que está no I18nMessage e a 
      message é a mensagem contida na 
      chave lá no arquivo messages.properties*/
    ${error.category} - ${error.message}<br />
</c:forEach>

Isso ficaria assim
erro - Isso é uma mensagem de teste

Tá no caso de utilizar a I18nMessage faz se um if para cada suposição, no caso estou usando Bean Validation e meus atributos estão assimm

    @NotNull @NotEmpty(message="{produto.nome.vazio}")
    private String nome;

    @Min(value=0, message="{produto.valor.negativo}")
    private Double valor;

    @Min(value=0, message="{produto.quantidade.negativa}")
    private Integer quantidade;

Pergunta, como chama-los na jsp?

Bom estudando um pouco mais aqui vi que estava confundindo Bean Validation com Mensagens intercionalizadas, agora vi a diferença, mas valeu pela sua atenção

grande abraço!