public class Student{
@NotNull
private Course course= null;
@CustomValidation(enumCourse = course)
private String details = null;
}
}
如何将课程变量传递给CustomValidation注释?我得到一个错误,说该课程必须是一个枚举常量表达式。
我也编写了自定义验证接口和验证器。
答案 0 :(得分:2)
注释属性在编译时必须是常量。
你不能在那里使用变量。
此处的关键字为cross fields validation
。
您有两个选择:
或者在方法级别创建注释,返回验证的所有必要字段。
@CustomAnnotations
Pair<Course, String> getCourseAndDetailForValidation() {
return Pair.of(course, details)
}
您可以更改返回类型以符合您的口味,它可能是List,Array,包装器对象......
答案 1 :(得分:0)
由JLS第9.6.1节规定。注释成员类型必须是以下之一:
原始 串 类 一个枚举 另一个注释 以上任何一个数组
课程必须是其中一种类型。