在Jersey ConstraintValidator错误消息中设置自定义invalidValue

时间:2015-07-31 10:29:49

标签: java jersey jersey-2.0

我有一个如下所示的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
}]

1 个答案:

答案 0 :(得分:1)

我认为实施MyRequest#toString()可以解决您的问题。

注意:我将原来的答案改为陈述而不是问题。