spring MVC如何进行表单验证(使用休眠)

时间:2016-04-19 19:24:09

标签: java spring hibernate spring-mvc

我正在按照教程向大家展示如何使用Spring MVC框架构建一个可以验证的简单表单。

我们创建了一个使用RequestMapping注释的函数,然后将@Valid作为注释添加到此函数的第一个参数旁边@ModelAttribute注释。让我们调用第一个参数类型ClassA

现在在ClassA我们使用hibernate验证注释注释了一些属性(例如@NotNull@Pattern等等。)

我想要了解的是这一切是如何工作的?

我检查了@interface NotNull的代码,例如它确实没有做任何事情。

我假设spring MVC框架使用反射来检测RequestMapping函数的第一个参数是否使用Valid进行注释,然后在提交表单时调用{{ 1}}验证SOMETHING属性。

ClassA在哪里?它处于休眠状态吗?代码请问... SOMETHING如何调用Spring代码,我们刚刚将hibernate hibernate添加到项目中,但我们没有说过{{1}使用它们。

另外,将jars绑定到休眠状态的规范是什么?

某人是否是简单的术语并且使用高级别(如果可能的话,可以使用代码参考)向我解释事情是如何运作的?

我对此非常陌生,来自C ++,其中的事情完全不同。我试图了解Spring的工作背后的机制。

1 个答案:

答案 0 :(得分:0)

你所看到的是Spring对JSR-303 Bean Validation API的支持。那些注释(例如@Patternjavax.validation.*都是此JSR的一部分。由于这只是一个JSR(基本上,JSR只是一组接口),它需要一个具体的实现才能实际工作(称为提供者)。这是hibernate在图片中出现的地方。 Hibernate拥有JSR-303的实现,称为hibernate-validator。此API与Hibernate的核心ORM功能无关。事实上,这个API是JSR-303的reference implementation,这就是为什么在documentation中你会看到它被用作默认提供者。

作为Spring框架的用户,您需要知道的是Spring需要在类路径中找到JSR-303的实现,以便您可以从{{1}}包中开始使用这些注释。