2017-03-06 8 views
0

私は春のブート、apache cxf、jaxrs、およびhibernateバリデーターを使用しています。メソッドパラメータのカスタム制約を作成しようとしています。理由は@Validにはgroupsはありません.Hibernateバリデーターに登録または追加して@ValidすなわちExecutableValidatorのように動作するようにします。以下はコードですapache cxf jaxrsカスタムhibernateパラメータ制約を登録します。

@Target({ElementType.PARAMETER}) 
@Retention(RetentionPolicy.RUNTIME) 
@Constraint(validatedBy=MyValidator.class) 
@Documented 
public @interface ValidInput { 
    String message() default "com.xyz.message"; 

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

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

@Provider 
@Component 
public class MyValidator implements ConstraintValidator<ValidInput, Entity> { 

    private static Validator validator; 

    private Class<?>[] groups ; 

    Class<? extends Payload>[] payload; 

    static{ 
     ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); 
     validator = factory.getValidator(); 
    } 

    @Override 
    public void initialize(ValidInput constraintAnnotation) { 
     this.groups = constraintAnnotation.groups(); 
     this.payload = constraintAnnotation.payload(); 
    } 

    @Override 
    public boolean isValid(Entity value, ConstraintValidatorContext context) { 
     //logic here 
    } 


} 

ここで、rest serviceメソッドパラメータに制約を使用すると、バリデータはまったく呼び出されません。 @Validの代わりに@ValidInputを使用したいと思います。

pls help

答えて

0

妥当性検査機能を有効にしたいと考えています。

@Bean 
    public JAXRSBeanValidationFeature beanValidationFeature(){ 
     JAXRSBeanValidationFeature feature = new JAXRSBeanValidationFeature(); 
     return feature; 
    } 

    @Bean 
    public ValidationExceptionMapper validationExceptionMapper(){ 
     return new ValidationExceptionMapper(); 
    } 
+0

私はそれを有効にしました。組み込み制約はうまく動作しています。 – shiva

+0

Validateonexecute注釈も試しました。しかし、それは動作していません。構成が不足しているかどうかは不明です。私は@Validatedで私の要求を解決するスプリングバリデーターを見て始めました。これにより、制約グループを指定することができます。しかし、私は冬眠バリデーターで何が欠けているか知りたいです。 – shiva

+0

cxfデバッグログを有効にしてJAXRSBeanValidationInInterceptorが呼び出されているかどうかを調べることができます –

関連する問題