我有一个如下所示的Jersey Validator,我在请求对象上使用它。
当我得到错误响应时,我得到" invalidValue"中的整个对象。字段。
我希望能够将无效值设置为MyRequest中的单个字段,而不是整个对象。这是因为我希望我的验证逻辑依赖于2个字段,但只有一个报告为无效。
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {MyValidation.Validator.class})
public @interface MyValidation {
String message() default "{my.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
class Validator implements ConstraintValidator<EmailUnique, MyRequest> {
@Override
public void initialize(final MyValidation email) {
}
@Override
public boolean isValid(final MyRequest mr, final ConstraintValidatorContext constraintValidatorContext) {
return mr.getField()!= null; //or some more complicated logic
}
}
}
回复如下:
[{
"message": "nice message",
"messageTemplate": "{my.message}",
"path": "....",
"invalidValue": "MyRequest@149e88d9" <--- need to be able to specify the value here
}]
答案 0 :(得分:1)
我认为实施MyRequest#toString()
可以解决您的问题。
注意:我将原来的答案改为陈述而不是问题。