Доступ к сообщениям Hibernate Validator

Я использую Hibernate Validator с Spring Boot. У меня есть переменная в классе, которую я аннотировал, как показано ниже.

Public class User {

@Pattern(regexp=".+@.+\\..+", message="Wrong email!")
private String userEmail;

}

Я использую проверку в контроллере.

@PostMapping("/users")
public ResponseEntity addUser(@Valid @RequestBody User user, BindingResult result) {

    if(result.hasErrors()) {
        log.info("There are errors in the input");
    }

    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        Validator validator = factory.getValidator();
        Set<ConstraintViolation<User>> inputErrors = validator.validate(user);

        log.info("Errors: "  + inputErrors.toString());
}

Есть ли проще, почему получить доступ к сообщениям проверки, чем через фабрику? Что-то вроде

result.getMessage();

person g3blv    schedule 04.05.2017    source источник


Ответы (1)


Вы можете автоматически подключить источник сообщения к вашему контроллеру

@Autowired
private MessageSource messageSource;

и получить сообщение

messageSource.getMessage(<your key from the error>, null, locale);

Вам нужна локаль, чтобы получить правильно локализованный текст. Вам нужно повторить ошибки, чтобы получить все сообщения для всех найденных ошибок проверки.

person StanislavL    schedule 04.05.2017
comment
Будет ли ключ в моем случае userEmail? Есть ли хороший способ получить локаль? - person g3blv; 06.05.2017