Tomcat应用程序,我使用Spring进行依赖注入。我还使用Jersey进行休息调用,现在我需要做一些bean验证。我找到了一些例子,如果我使用Spring MVC @RequestMapping进行休息调用很容易。但是使用Jersey和hibernate验证器一起变得很丑陋。
@POST
@Path("/addSomething")
public void addSomething(Something something) {
Set<ConstraintViolation<Something>> violations = validator.validate(something);
if(violations.size()>0){
throw new BadRequestException("illegal input");
}
..
}
这有效,但我需要为每个帖子请求重复此操作。这很难看。
有没有办法在这里巧妙地处理bean验证?
答案 0 :(得分:1)
您可以通过使用将Object作为参数的通用验证方法来改进它,例如:
public static void validateBean(Object object) {
Set<ConstraintViolation<Object>> violations = validator.validate(object);
if(violations.size()>0){
throw new BadRequestException("illegal input");
}
}
然后你只需要在每个帖子方法的开头调用validateBean(someObject);
。
答案 1 :(得分:1)
如何使用约束组XD。
public void validateEntity(final Object object, final Class<? extends Default>... classes)
throws IllegalArgumentException {
final Set<ConstraintViolation<Object>> errors = validator.validate(object, classes);
if (!errors.isEmpty()) {
throw new IllegalArgumentException(returnErrors(errors));
}
}
public String returnErrors(final Set<ConstraintViolation<Object>> errors) {
final StringBuilder builder = new StringBuilder();
for (final ConstraintViolation<Object> error : errors) {
builder.append(error.getMessage());
}
return builder.toString();
}