如何在自定义@annotation中定义错误消息

时间:2015-12-25 14:12:56

标签: java validation

我正在构建我自己的@annotation,它可以对类的许多字段进行操作(因此它是类级注释而不是字段级注释)。

当出现错误时,我添加ConstraintViolation并打印从.properties文件中获取的错误消息。错误是这样的: 字段 {1} 必须小于字段 {2}

我需要的是填充变量 {1} {2} 的方法。我必须在方法isValid()中进行,因为在那里,我在语法中定义了在错误消息中显示的值,而不是 {1} {2 }

这是我的注释:

@EsempioAnnotationClassLevel(dateFromNomeCampo={"dataDiNascitaFrom","dataLavoroFrom",...})

这是我的界面:

    @Constraint(validatedBy = EsempioAnnotationClassLevelValidator.class)
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.TYPE)
    public @interface EsempioAnnotationClassLevel  {        
        String[] dateFromNomeCampo();
        String message() default "Errore FatherSearchInterface;         
        Class<?>[] groups() default {};         
        Class<? extends Payload>[] payload() default {}; 
}

这是我的类,它实现了ConstraintValidator

public class EsempioAnnotationClassLevelValidator implements ConstraintValidator<EsempioAnnotationClassLevel, Object>{
...
 public boolean isValid(Object object, ConstraintValidatorContext cxt) { 
    ...
    cxt.buildConstraintViolationWithTemplate("errorMessage").addNode("field").addConstraintViolation();
    ...   
 }
...
}

1 个答案:

答案 0 :(得分:0)

请您检查以下问题是否可以作为参考?

Can you change an annotation message at run time?