0
我使用的是spring引導,apache cxf,jaxrs和hibernate驗證器。我正在嘗試爲方法參數創建自定義約束。原因是@Valid沒有組。我該如何註冊或將其添加到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
}
}
現在,當我使用約束上休息服務方法參數,驗證是不是在所有調用。我想用@ValidInput
代替@Valid。
請幫忙
我已啓用它。內置的約束條件正常。 – shiva
我也嘗試了Validateonexecute註解。但它不起作用。不知道是否缺少任何配置。我已經開始關注使用@Validated解決我的需求的spring驗證器。這允許指定約束組。但是,我渴望知道我在使用hibernate驗證程序時缺少的什麼 – shiva
您是否可以通過啓用cxf調試日誌來檢查是否正在調用JAXRSBeanValidationInInterceptor –