是否可以在调用验证方法的验证器中获取组?
我有多个组(Create、Update、Delete),它们大多数会导致对一个bean进行类似的验证。
与其提供多个几乎相同的验证器(并创建实用程序函数来外部化相同的验证代码),我更希望有一个单独的验证器来处理与调用验证的组有关的验证。
- 在最坏的情况下,我有3倍的
n
单一验证器和n
实用程序类用于共享代码,而不是只有n个验证器。*
Validator.validate(Object, Class<?> ... groups)
我如何让我的验证器中的这些组做一些伪像?
if (groups.contains(Create.class)) // validate create stuff
2条答案
按热度按时间68bkxrlz1#
如果您询问如何在自定义约束(ConstraintValidator实现)中确定当前已验证的约束,答案是无法确定。
组和约束的概念是正交的。约束不应该根据被验证的组而有不同的行为。
在这种情况下,想想约束的用户,如果验证是有条件的,他们怎么知道他们的约束做什么?
bxpogfeg2#
正如@hardy在他的回答中所说的,在运行时在验证器实现中检索验证组是不可能的,但是可以通过创建不同的注解并指定组或者使用重复的注解来实现。