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 –