簡體   English   中英

與Spring一起驗證bean

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM