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
私はそれを有効にしました。組み込み制約はうまく動作しています。 – shiva
Validateonexecute注釈も試しました。しかし、それは動作していません。構成が不足しているかどうかは不明です。私は@Validatedで私の要求を解決するスプリングバリデーターを見て始めました。これにより、制約グループを指定することができます。しかし、私は冬眠バリデーターで何が欠けているか知りたいです。 – shiva
cxfデバッグログを有効にしてJAXRSBeanValidationInInterceptorが呼び出されているかどうかを調べることができます –