[英]bean validation together with Spring
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驗證?
您可以通過使用將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);
在每個帖子方法的開頭。
那么使用也是對抗組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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.