【发布时间】:2013-07-20 15:37:14
【问题描述】:
有没有办法让验证器在验证失败时指定消息?我知道我可以实现注释,所以我可以像这样使用它(实际上可能会使用枚举而不是 value 的字符串):
@Check(value="Type1", message="{type1.checkFailed}") public MyClass myVal1;
@Check(value="Type2", message="{type2.checkFailed}") public MyClass myVal2;
这将得到我想要的最终结果。我还可以实现多个注解/验证器并这样做,并在注解的定义中指定默认消息:
@CheckType1 public MyClass myVal1; // default message is type1.checkFailed
@CheckType2 public MyClass myVal2; // default message is type2.checkFailed
我想做的是让与@Check关联的验证器确定是使用type1.checkFailed还是type2.checkFailed作为消息,取决于value,像这样:
@Check("Type1") public MyClass myVal1;
@Check("Type2") public MyClass myVal2;
据我了解,最佳做法是让验证者专注于单一特征。但我不认为我正在尝试做的是与此相反,因为它是对单个特征的验证,只有它的变体可以被验证。
以犬种为例:
@BreedSize("Large") Dog bigDog;
@BreedSize("Small") Dog smallDog;
由于给定的注释只能在一个元素上出现一次(至少从 SE7 开始),这也可能是确保仅发生几个互斥验证中的一个的合理方法。我认为有/正在提议在一个元素上使用多个相同类型的注释,但我想验证器可以检查是否只提供了一个,在这种情况下——不过在这里领先。
这可能吗?
【问题讨论】:
标签: bean-validation