Java自定义验证注释

时间:2018-05-15 14:40:14

标签: java spring-mvc annotations

    public class Student{
    @NotNull
    private Course course= null;

    @CustomValidation(enumCourse = course)
    private String details = null;
    }
}

如何将课程变量传递给CustomValidation注释?我得到一个错误,说该课程必须是一个枚举常量表达式。

我也编写了自定义验证接口和验证器。

2 个答案:

答案 0 :(得分:2)

注释属性在编译时必须是常量。

你不能在那里使用变量。

此处的关键字为cross fields validation

您有两个选择:

  1. 在班级创建注释。在那里你可以访问所有类的属性,并且验证应该很容易
  2. 或者在方法级别创建注释,返回验证的所有必要字段。

    @CustomAnnotations
    Pair<Course, String> getCourseAndDetailForValidation() {
       return Pair.of(course, details)
    }
    

    您可以更改返回类型以符合您的口味,它可能是List,Array,包装器对象......

答案 1 :(得分:0)

由JLS第9.6.1节规定。注释成员类型必须是以下之一:

原始 串 类 一个枚举 另一个注释 以上任何一个数组

课程必须是其中一种类型。