SpringMVC中的 JSR 303 数据校验框架说明
JSR 303 是java为Bean数据合法性校验提供的标准框架,它已经包含在JavaEE 6.0中。
JSR 303 通过在Bean属性上标注类似于@NotNull、@Max等标准的注解指定校验规则,
并通过标准的验证接口对Bean进行验证:
---------------------------------------------------------------------------
注解 说明
---------------------------------------------------------------------------
@Null 被注释的元素必须为null
@NotNull 被注释的元素不能为null
@AssertTrue 被注释的元素必须为true
@AssertFalse 被注释的元素必须为false
@Min(value) 被注释的元素必须是一个数字,其值必须>=指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须<=指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须>=指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须<=指定的最大值
@Size(max, min) 被注释的元素的大小必须在指定的范围内
@Digits(integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(value) 被注释的元素必须符合指定的正则表达式 ---------------------------------------------------------------------------
Hibernate Validation 是JSR 303 的一个参考实现,除支持所有的标准的校验注解之外,
它还支持以下的扩展注解: 注解 说明
@Email 被注释的元素必须是一个电子邮箱地址
@Length 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串必须非空
@Range 被注释的元素必须在合适的范围内
---------------------------------------------------------------------------
Spring 4.0 拥有自己独立的数据校验框架,同时支持JSR 303 标准的校验框架。
Spring 在进行数据绑定时,可同时调用校验框架完成数据校验工作。
在SpringMVC中, 可直接通过注解驱动的方式进行数据校验。
Spring 的LocalValidatorFactoryBean 既实现了Spring的Validator接口,
也实现了 JSR 303 的Validator接口。只要在Spring容器中定义一个
LocalValidatorFactoryBean,即可将其注入到需要数据校验的Bean中。
Spring本身并没有提供 JSR303 的实现,所以必须将 JSR303 的实现者的jar包
放到类路径下。 通过在处理方法的入参上标注 @Valid注解 即可让SpringMVC 在完成数据绑定之后执行数据校验的工作。
在已经标注了 JSR303 注解的表单/命令对象前标注一个 @Valid, SpringMVC 框架在将请求参数绑定到
该入参对象后,就会调用校验框架根据注解生命的校验规则实施校验。 SpringMVC 是用过对处理方法签名的规约来保存校验结果的:
前一个表单/命令对象的校验结果保存到随后的入参中,这个保存的校验结果的入参必须是 BindingResult
或 Errors 类型,这两个类都位于 org.springframework.validation 包中。 但是需要注意的一点:
需要校验的bean对象和其绑定结果的BindingResult对象必须成对出现,而且它们两个必须紧挨着,之间不能有
其他的入参。 BindingResutl 其实是 Errors的子类, Errors 接口提供了获取错误信息的方法,如 getErrorCount()
或 getFieldErrors(String field)。
BindingResult 扩展了 Errors 接口。
SpringMVC中的 JSR 303 数据校验框架说明的更多相关文章
- SpringMVC中使用Json传数据
在web项目中使用Json进行数据的传输是非常常见且有用的,在这里介绍下在SpringMVC中使用Json传数据的一种方法,在我的使用中,主要包括下面四个部分(我个人喜好使用maven这类型工具进行项 ...
- SpringMVC——类型转换和格式化、数据校验、客户端显示错误消息
在介绍类型转换和格式化之前,我首先来介绍 <mvc:annotation-driven />. 需要导入的 schema: xmlns:mvc="http://www.sprin ...
- SSM-SpringMVC-31:SpringMVC中利用hibernate-validator做后台校验
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 校验有三种:前台页面校验(例如js和h5),后台校验,数据库校验 但是一般能不用数据库校验就不用数据库校验,因 ...
- SpringMVC的拦截器和数据校验
SpringMVC拦截器 什么是拦截器:Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理.例如通过拦截器可以 ...
- springMVC中接收请求参数&&数据转发
### 1. 接收请求参数 #### 1.1. [不推荐] 通过HttpServletRequest获取请求参数 假设存在: <form action="handle_login.do ...
- 自己写的基于java Annotation(注解)的数据校验框架
JavaEE6中提供了基于java Annotation(注解)的Bean校验框架,Hibernate也有类似的基于Annotation的数据校验功能,我在工作中,产品也经常需要使 用数据校验,为了方 ...
- 【Spring】SpringMVC中浅析Date类型数据的传递
在控制器中加入如下代码: @InitBinder public void initBinder(ServletRequestDataBinder bin){ SimpleDateFormat sdf ...
- struts2(三)---struts2中的服务端数据验证框架validate
struts2为我们提供了一个很好的数据验证框架–validate,该框架可以很方便的实现服务端的数据验证. ActionSupport类提供了一个validate()方法,当我们需要在某一个acti ...
- 关于SpringMVC中如何把查询数据全转成String类型
之前,本想与客户商量做几张固定的报表予使用,结果发现客户每个月都需要各种各样的报表,所以我们做了个窗口用于直接执行SQL语句:数据量一开始并不是很大查询出来的数据较少(约1-6W左右),所以刚开始几个 ...
随机推荐
- Windows 7系统如何设置计划任务?
Windows 7系统如何设置计划任务? 问题描述:Windows 7系统如何设置计划任务? 任务计划概述:任务计划,可以将任何脚本.程序或文档安排在某个时间运行.“任务计划”在每次启动windows ...
- Ubuntu下看不见pthread_create(安装pthread线程库)
使用下面的命令就可以了! sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev 然后在用man -k pthre ...
- ROS学习(十)—— 使用rosed编辑ROS中的文件
一.rosed 1.作用: 直接编辑一个文件而不需要打开完整路径名 2.语法: rosed [package_name] [filename] 3.如果不知道编译哪个文件名,可以使用tab进行查询 r ...
- ROS学习(七)—— 理解ROS Topic
一.准备工作 1.打开roscore roscore 2.turtlesim 打开一个turtulesim节点 rosrun turtlesim turtlesim_node 3.turtle key ...
- Sentinel 简介与API订阅发布
Sentinel 简介 Redis 的 Sentinel 系统用于管理多个 redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断 ...
- 如何设置IIS程序池的回收时间,才能最大程度的减少对用户的影响?
作为.Net开发人员,其实对IIS的应用程序池知之甚少,在工作中我也有几次遇到过网站无故打不开的情况,找了半天原因也找不到是怎么造成的,有一次我给网站找了一个程序程序池后发现就能正常访问了,这也让我对 ...
- Spark技术栈
- 安卓Textview的getLineCount返回0
ViewTreeObserver observer = tv.getViewTreeObserver(); // textAbstract为TextView控件 observer.addOnGloba ...
- 转 linux进程内存到底怎么看 剖析top命令显示的VIRT RES SHR值
引 言: top命令作为Linux下最常用的性能分析工具之一,可以监控.收集进程的CPU.IO.内存使用情况.比如我们可以通过top命令获得一个进程使用了多少虚拟内存(VIRT).物理内存(RES). ...
- FreeSWITCH收到重复的DTMF信号
一.背景 用户是运营商手机,拨打的是运营商的固话号码进入的FreeSWITCH的IVR,进入IVR语音播报后,按指定的分机号呼相关人员. 二.现象 用户反映拨打124870找不到指定人员,以前是正常的 ...