是否有一个标准的方式使JSR303豆验证的使用附加说明的方法参数
-
29-10-2019 - |
题
我一直在找一个在一段时间现在有没有运气。I'n' 不 使用弹簧视,但仍然想要使用 @javax.validation.Valid
启用验证的方法的参数。举一个例子
public class EventServiceImpl implements IEventService {
@Override
public void invite(@Valid Event event, @Valid User user) { ... }
}
使用视,这是启用 @Controller
附加说明的豆子有一个简单的 <mvc:annotation-driven/>
(见 5.7.4.3配置JSR-303验证程序使用的软弹簧).
使用AOP应该是很微不足道的。尽管如此,我怀疑有一些标准的方式做到这一点。因此,这个问题:是否有类似的事情非软应用程序和非控制器豆启用输入验证附加说明豆吗?
解决方案
方法级别验证不属于Bean验证规范(JSR 303)。方法级别验证是附录C 中添加的规范中的建议。
Hibernate Validator 4.2(已经有一个beta版)正在实现此建议,并允许在方法参数和返回值上放置JSR 303批注。当然,您仍然需要一些Spring胶水代码,但这应该不太难。
Also Bean Validation 1.1将正式在方法规范中添加方法级别的验证(不只是附录/推荐)。另请参见 http://beanvalidation.org/
其他提示
使用视,这是启用@控制附加说明的豆子
@有效的仅仅是一个标记在控制器豆隐藏的代码没有验证和把所有的约束侵犯行为 Errors
在一个很好的方式。春季的设计师可能已经发明了他们自己的注释,以做同样的事情。
真正使用@有效的注释是在类(豆),你是验证带JSR303验证程序及其主要用途是为验证对象的图表。这意味着一个豆可以有其他的 豆引用@有效的注释触发的验证。
外部视,可以使用配置验证程序来证实任何豆使用JSR303注释但是,与很好的填充 Errors
在控制器,你将以自己决定什么你要做违反约束。
所以回答你的问题,没有标准的方式。具有同样的外观,因为在一个控制器,可以使用@有效的注释(或者创建一个新的)运行AOP建议,以验证豆和填充'ViolationCollector'(喜欢的东西中的错误视),必须传递到一个方法。
答案似乎很旧。到目前为止,您可以使用@Validated
和MethodValidationPostProcessor
对任何Spring bean进行方法内联验证。他们基本上负责为任何层的Spring托管bean创建类切入点的行为,而不是专门针对Controller。
另请参阅我的其他 answer 。