Estou tendo um problema com o método onErrorSendBadRequest, quando utilizo mensagem através do I18nMessage, quando realizo uma chamada ao método do meu controller via ajax o vraptor serialize o retorno em um json porém não apresenta a mensagem vinculada a chave no arquivo message.properties, apresenta a chave conforme segue imagem abaixo:
Retorno requisição ajax:
{
"errors": [
{
"message": "login.invalido",
"severity": "ERROR"
}
]
}
Meu validator:
public void validate(Usuario usuario) {
// Validar se login e senha foram informados
validator.addIf(usuario.getLogin() == null, new I18nMessage("login", "login.null"));
validator.addIf(usuario.getSenha() == null, new I18nMessage("login", "senha.null"));
validator.addIf(!usuarioDao.isExisteLogin(usuario), new I18nMessage("login", "login.invalido"));
validator.addIf(usuarioDao.isExisteLogin(usuario) && usuarioDao.isEmpty(usuario), new I18nMessage("login", "senha.invalida"));
if (!method.containsAnnotation(Public.class)) {
validator.validate(usuario);
validator.addIf(usuarioDao.isExisteLogin(usuario),
new I18nMessage("login", "usuario.login.existe"));
validator.addIf(usuarioDao.isExisteEmail(usuario),
new I18nMessage("email", "usuario.email.existe"));
}
}
Controller:
@Public
@Post("/autentica")
@Consumes(value = "application/json", options = WithoutRoot.class)
public void autentica(Usuario usuario) {
validator.validate(usuario);
validator.onErrorSendBadRequest();
usuarioSession.setUsuario(usuarioDao.getUsuario(usuario));
result.use(Results.json())
.withoutRoot()
.from(new Success("login", "Login realizado com sucesso!", "/"))
.serialize();
}
Observação: As validações do BeanValidations são serializadas corretamente