7. SpringMVC 数据验证

来源:互联网 发布:p2p理财记账软件 编辑:程序博客网 时间:2024/06/06 09:54

本系列入门学习参考极客学院Spring入门系列视频学习记录总结而来

JSR 303 校验框架:
JSR 303 用于对Java Bean 中的字段的值进行验证,使得验证逻辑从业务代码中脱离出来
是一个运行时的数据验证框架,在验证之后验证的错误信息会被马上返回
一般用于表单提交页面(如用户名必填、只能由数字字母组成等等)

@NotNull 注解元素必须是非空
@Null 注解元素必须是空
@Digits 验证数字构成是否合法
@Future 验证是否在当前系统时间之后
@Past 验证是否在当前系统时间之前
@Max 验证值是否小于等于最大指定整数值
@Min 验证值是否大于等于最小指定整数值
@Pattern 验证字符串是否匹配指定的正则表达式
@Size 验证元素大小是否在指定范围内
@DecimalMax 验证值是否小于等于最大指定小数值
@DecimalMin 验证值是否大于等于最小指定小数值
@AssertTrue 被注释的元素必须为true
@AssertFalse 被注释的元素必须为false

Hibernate Validator扩展注解类:
@Email 被注释的元素必须是电子邮箱地址
@Length 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range 被注释的元素必须在合适的范围内

配置 SpringMVC 校验框架:
在/WEB-INF/springmvc.xml中进行配置:

这里写图片描述

在JavaBean中进行配置:

这里写图片描述

在Controller中进行配置:

这里写图片描述

校验结果保存在BindingResult或Errors对象中:
这两个类都位于org.springframework.validation包中
需校验的表单对象和其绑定结果对象或错误对象是成对出现的
Errors接口提供了获取错误信息的方法,如getErrorCount()获取错误的数量, getFieldErrors(String field)得到成员属性的校验错误列表
BindingResult接口扩展了Errors接口,以便可以使用Spring的org.springframeword.validation.Validator对数据进行校验,同时获取数据绑定结果对象的信息

在JSP中显示错误信息:

这里写图片描述

国际化错误信息:

在class下面新建i18n文件夹,并新建messages.properties和messages_zh_CN.properties文件
在/WEB-INF/springmvc.xml中配置国际化

这里写图片描述

messages.properties:

Between.user.age=\u5E94\u8BE5\u5728{min}\u4E0E{max}\u4E4B\u95F4Pattern.user.password=\u5BC6\u7801\u662F6-30\u4E2A\u5B57\u7B26\uFF0C\u5FC5\u987B\u662F\u5B57\u6BCD\u6216\u6570\u5B57\u7EC4\u5408Length.user.realName=\u975E\u6CD5\u771F\u5B9E\u59D3\u540DNotEmpty.user.userName=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7AEmail.user.email=\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u90AE\u4EF6\u5730\u5740NotNull.user.age=\u8BF7\u586B\u5199\u60A8\u7684\u5E74\u9F84

messages_zh_CN.properties:

Between.user.age=\u5E94\u8BE5\u5728{min}\u4E0E{max}\u4E4B\u95F4Pattern.user.password=\u5BC6\u7801\u662F6-30\u4E2A\u5B57\u7B26\uFF0C\u5FC5\u987B\u662F\u5B57\u6BCD\u6216\u6570\u5B57\u7EC4\u5408Length.user.realName=\u975E\u6CD5\u771F\u5B9E\u59D3\u540DNotEmpty.user.userName=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7AEmail.user.email=\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u90AE\u4EF6\u5730\u5740NotNull.user.age=\u8BF7\u586B\u5199\u60A8\u7684\u5E74\u9F84

自定义校验规则:
定义注解类,并使用Constraint注解标注,属性validatedBy指定校验实现类

这里写图片描述

定义实现类,需要集成ConstraintValidator接口,isValid方法负责校验

这里写图片描述

0 0
原创粉丝点击