Spring MVC Form Validation与Bean Validation API
此示例显示如何使用Java注释在没有任何xml
的情况下使用Bean Validation API验证Spring MVC中的表单。 用户将被建议输入他们的注册数据,验证者将检查其有效性。
首先在项目中添加以下依赖项:
|
|
创建模型类
创建模型类User如下:
|
|
这里使用一些JSR 303注释:@NotNull
,@Size
,@Min
,@Max
和@Past
以及由hibernate验证器实现提供的一些附加注释:@Email
,@DateTimeFormat
。
请注意,在其注释中指定了email 字段的错误消息。 而在messages.properties文件中指定password,age 和birthday 字段的错误消息,以便演示验证错误消息的外部化。 这个文件应放在resources
文件夹下:
|
|
对于messageSource()
与bean.setBasename("classpath:messages")
; 代码和validator()
bean也必须配置以及注释:
|
|
另外配置类mu使用@PropertySource(“application.properties”)
注释,并且必须将jsp
页面的路径添加到此文件,如下所示:
|
|
创建FormController类
现在在controller 类中,通过javax.validation
包中的@Valid
注释注释正在备份表单的模型对象。
Spring MVC将使用@Valid
注释来验证模型对象,并将其属性与使用Spring的表单标签的JSP表单的输入绑定。 任何约束违反将暴露为BindingResult
对象中的错误,因此我们可以在控制器的方法中检查违例。
|
|
创建JSP输入表单
添加具有以下内容的register.jsp
文件:
|
|
通常,当发生任何验证错误时,我们会将输入表单返回给用户。 在JSP表单中,我们可以使用Spring的形式错误标记(如
创建JSP Success页面
将显示registerSuccess.jsp
页面,以防用户输入所有数据有效。 这里是代码:
|
|
启动应用程序,转到http://localhost:8080/