ConstraintValidatorContext不发送消息

时间:2015-04-08 15:50:44

标签: java spring hibernate validation bean-validation

我有一个正在运行的自定义约束。

我想从我的消息包中发送要解析的错误代码。

当我这样做时:

context.disableDefaultConstraintViolation();
context.buildConstraintViolationWithTemplate("{customConstraint.duplicateName}")
        .addConstraintViolation();

读取属性并显示正确的文本。

当我尝试这个时:

context.disableDefaultConstraintViolation();
context.buildConstraintViolationWithTemplate("{customConstraint.duplicateName}")
        .addPropertyNode(null).inIterable().atKey(field)
        .addPropertyNode("name")
        .addConstraintViolation();

解析了正确的节点,但忽略了该消息,并且属性代码为 ' CustomConstraint.mapName[field].name'归还。

我有' org.hibernate:hibernate-validator:5.1.3.Final'

的gradle依赖关系

有人可以告诉我为什么在定义节点路径时忽略了消息?

修改

这是约束定义:

@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy=CustomConstraintImpl.class)
public @interface CustomConstraint{

String message() default "{CustomConstraint.mapName}";

Class<?>[] groups() default {};

Class<? extends Payload>[] payload() default {};

}

这是实现类的一部分:

public class CustomConstraintImpl implements ConstraintValidator<CustomConstraint, Map<String, Object>> {

@Override
public void initialize(CustomConstraint c) {
    // TODO Auto-generated method stub

}

@Override
public boolean isValid(Map<String, Object> map, ConstraintValidatorContext context) {
...
...
in this method is where the above context code is being called
}

0 个答案:

没有答案