假设我正在使用Hibernate Validator,我编写了以下代码:
@Email
@Range(min=3,max=7)
public String getSomething() {
// ...
}
@Email
注释仅适用于CharSequence
实现(字符串等)。 @Range
注释仅适用于数字类型。
当我执行此代码时,没有什么特别的事情发生。 getSomething()
与添加这些注释之前完成的工作完全相同。
如何使用Hibernate Validator检测我不能同时使用这两个注释?提前谢谢!
答案 0 :(得分:3)
根据JavaDoc,@Range
约束也适用于数字的字符串表示。从Hibernate Validator的角度来看,一切都很顺利。
请注意,调用getSomething()
方法不会自动触发约束的评估。要验证约束,请使用javax.validation.Validator
API。如果错位约束(例如@Email
放入数字),Hibernate Validator将在验证期间抛出异常(例如,在调用Validator#validate()
时。
为了在编译时而不是运行时检测错位,您可以使用Hibernate Validator提供的annotation processor。此处理器可以插入javac编译器或IDE中,如果检测到非法约束,将引发编译错误。