2016-04-24 16 views
2

Spring MVCでカスタム検証を行うことができません。私はそれのためのパラメータとカスタムバリデーターのための独自の注釈を実装しましたが(すべてが以下に示されています)、検証は決して行われません。すべてのアイデアは本当に感謝しています。RequestParamのカスタム検証がSpring MVCで動作しない

コントローラ

@Validated 
@RestController 
public class FooController { 

    @RequestMapping(value = "/somepath", 
        method = RequestMethod.GET, 
        produces = MediaType.APPLICATION_JSON_VALUE) 
    @ResponseStatus(HttpStatus.OK) 
    public String get(@CustomParam @RequestParam(String fooParam) { 
     return "Hello"; 
    } 

} 

カスタムリクエストパラメータ

@Documented 
@Constraint(validatedBy = CustomValidator.class) 
@Target({ElementType.PARAMETER}) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface CustomParam { 

    String message() default "Wrong!"; 

    Class<?>[] groups() default {}; 

    Class<? extends Payload>[] payload() default {}; 

} 

カスタムバリデータ

@Component 
public class CustomValidator implements ConstraintValidator<CustomParam, String> { 

    @Override 
    public void initialize(CustomParam param) {} 

    @Override 
    public boolean isValid(String givenParam, ConstraintValidatorContext context) { 
     // some custom validation is here, never enter this method though 
    } 

} 

答えて

0

ここに何が間違っているかのようだ。私はSpring Bootを使用しているので、デフォルトでhibernateバリデーターを使用しています。これを修正するために、私はthisの答えに従って、Beanを追加してSpringの設定を変更しました。

@Bean 
public Validator validator() { 
    return new LocalValidatorFactoryBean(); 
} 

@Bean 
public MethodValidationPostProcessor methodValidationPostProcessor() { 
    MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor(); 
    methodValidationPostProcessor.setValidator(validator()); 
    return methodValidationPostProcessor; 
} 
関連する問題