假设我正在使用Hibernate Validator并编写以下代码:

@Email
@Range(min=3,max=7)
public String getSomething() {
    // ...
}


@Email注释仅适用于CharSequence实现(字符串等)。 @Range注释仅适用于数字类型。

当我执行此代码时,没有什么特别的事情发生。 getSomething()的作用与添加这些注释之前的作用相同。

如何使用Hibernate Validator来检测我不能同时使用这两个注释?提前致谢!

最佳答案

根据JavaDoc@Range约束也适用于数字的字符串表示形式。因此,从Hibernate Validator的角度来看,一切都很好。

请注意,调用getSomething()方法不会自动触发对约束的评估。要验证约束,请使用javax.validation.Validator API。万一约束放错了位置(例如@Email放在数字上),则Hibernate Validator将在验证期间抛出异常(例如,调用Validator#validate()时)。

为了检测在编译时而不是在运行时放错位置,可以使用Hibernate Validator提供的annotation processor。该处理器可以插入javac编译器或您的IDE中,如果它检测到非法约束,则将引发编译错误。

关于java - 如何在Hibernate Validator中检查冲突的注释?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8872345/

10-13 03:36