我正在使用带有Spring Boot的Hibernate Validator。我在类中有一个变量,我在下面注释。
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();
答案 0 :(得分:0)
您可以将消息源自动装配到控制器
@Autowired
private MessageSource messageSource;
并获取消息
messageSource.getMessage(<your key from the error>, null, locale);
您使用区域设置来获取正确的本地化文本。您需要迭代错误以获取所有发现的验证错误的所有消息。