【发布时间】:2014-07-17 19:11:54
【问题描述】:
我使用 Bean Validation 1.2 创建了一个 Spring MVC REST 服务,方法如下:
@RequestMapping(value = "/valid")
public String validatedMethod(@Valid ValidObject object) {
}
如果对象无效,Tomcat 会通知我 The request sent by the client was syntactically incorrect. 和我的 validatedMethod 永远不会被调用。
如何获取在ValidObject bean 中定义的消息?我应该使用过滤器还是拦截器?
我知道我可以像下面这样重写,从注入的Validator 中获取ConstraintViolations 的集合,但上面看起来更整洁......
@RequestMapping(value = "/valid")
public String validatedMethod(ValidObject object) {
Set<ConstraintViolation<ValidObject>> constraintViolations = validator
.validate(object);
if (constraintViolations.isEmpty()) {
return "valid";
} else {
final StringBuilder message = new StringBuilder();
constraintViolations.forEach((action) -> {
message.append(action.getPropertyPath());
message.append(": ");
message.append(action.getMessage());
});
return message.toString();
}
}
【问题讨论】:
标签: java spring-mvc bean-validation