2016-06-17 5 views
0

Hibernate Validatorを使用して自分のメソッドの引数を検証したいと思います。メソッドの引数にJSR 303の検証を追加する方法

私は、ルックアップする例を試してみましたが、次の例を通じて JSR 303. Validate method parameter and throw exception

を行ってきました。しかしその答えは、まさに私の問題を解決しないともリンクが答えに有効期限が切れているしています。

ここに私が試したもののサンプルコードがあります。

//removing imports to reduce the length of code. 

/** 
* Created by Nick on 15/06/2016. 
*/ 

@Component 
public class ValidationService { 

    @Value("${namesAllowed}") 
    private String validNames; 

    @Autowired 
    private Validator validator; 

    public boolean validateName(
      @NotEmpty 
      @Pattern(regexp = ".*'.*'.*") 
      @Email 
      @Length(max = 10) 
        String name 
    ) { 

     Set<ConstraintViolation<String>> violations = validator.validate(name); 

     for (ConstraintViolation<String> violation : violations) { 
      String propertyPath = violation.getPropertyPath().toString(); 
      String message = violation.getMessage(); 
      System.out.println("invalid value for: '" + propertyPath + "': " + message); 
     } 
     List<String> namesAllowed= Arrays.asList(validNames.split(",")); 
     if (namesAllowed.contains(name.substring(name.indexOf(".") + 1))) { 
      return true; 
     } 
     return false; 
    } 
} 

}

答えて

1

メソッド検証はビーン検証1.1の一部として標準化されています。それについての詳細は、Hibernate Validator reference guideで知ることができます。

Springでは、MethodValidationPostProcessor beanを構成し、制約付きクラスに@Validatedという注釈を付ける必要があります。またthis answerが役に立つかもしれません。

関連する問題