SpringMVC 使用JSR-303进行校验 @Valid

 

一、准备校验时使用的JAR

validation-api-1.0.0.GA.jar:JDK的接口;

hibernate-validator-4.2.0.Final.jar是对上述接口的实现;

二、编写需要校验的bean

1 @NotNull(message="名字不能为空")
2 private String userName;
3 @Max(value=120,message="年龄最大不能查过120")
4 private int age;
5 @Email(message="邮箱格式错误")
6 private String email;

三、校验方法

 1 @RequestMapping("/login")
 2     public String testValid(@Valid User user, BindingResult result){
 3         if (result.hasErrors()){
 4             List<ObjectError> errorList = result.getAllErrors();
 5             for(ObjectError error : errorList){
 6                 System.out.println(error.getDefaultMessage());
 7             }
 8         }
 9
10         return "test";
11     }

备注:这里一个@Valid的参数后必须紧挨着一个BindingResult 参数,否则spring会在校验不通过时直接抛出异常

前台可以使用spring的标签库也可以自己自定义处理

spring标签库的用法:

 1 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
 2
 3 <html>
 4 <head>
 5 <title>Reservation Form</title>
 6 <style>
 7 .error {
 8     color: #ff0000;
 9     font-weight: bold;
10 }
11 </style>
12 </head>
13
14 <body>
15     <form:form method="post" modelAttribute="vm">
16         <form:errors path="*" cssClass="error" />
17         <table>
18             <tr>
19                 <td>Name</td>
20                 <td><form:input path="userName" />
21                 </td>
22                 <td><form:errors path="userName" cssClass="error" />
23                 </td>
24             </tr>
25             <tr>
26                 <td>email</td>
27                 <td><form:input path="email" />
28                 </td>
29                 <td><form:errors path="email" cssClass="error" />
30                 </td>
31             </tr>
32
33             <tr>
34                 <td colspan="3"><input type="submit" />
35                 </td>
36             </tr>
37         </table>
38     </form:form>
39 </body>
40 </html>

四、开启spring的Valid功能

1 <mvc:annotation-driven />
 1 空检查
 2 @Null       验证对象是否为null
 3 @NotNull    验证对象是否不为null, 无法查检长度为0的字符串
 4 @NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
 5 @NotEmpty 检查约束元素是否为NULL或者是EMPTY.
 6
 7 Booelan检查
 8 @AssertTrue     验证 Boolean 对象是否为 true
 9 @AssertFalse    验证 Boolean 对象是否为 false
10
11 长度检查
12 @Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
13 @Length(min=, max=) Validates that the annotated string is between min and max included.
14
15 日期检查
16 @Past           验证 Date 和 Calendar 对象是否在当前时间之前
17 @Future     验证 Date 和 Calendar 对象是否在当前时间之后
18 @Pattern    验证 String 对象是否符合正则表达式的规则
19
20 数值检查,建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为“”时无法转换为int,但可以转换为Stirng为"",Integer为null
21 @Min            验证 Number 和 String 对象是否大等于指定的值
22 @Max            验证 Number 和 String 对象是否小等于指定的值
23 @DecimalMax 被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度
24 @DecimalMin 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度
25 @Digits     验证 Number 和 String 的构成是否合法
26 @Digits(integer=,fraction=) 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。
27
28 @Range(min=, max=) Checks whether the annotated value lies between (inclusive) the specified minimum and maximum.
29 @Range(min=10000,max=50000,message="range.bean.wage")
30 private BigDecimal wage;
31
32 @Valid 递归的对关联对象进行校验, 如果关联对象是个集合或者数组,那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.(是否进行递归验证)
33 @CreditCardNumber信用卡验证
34 @Email  验证是否是邮件地址,如果为null,不进行验证,算通过验证。
35 @ScriptAssert(lang= ,script=, alias=)
36 @URL(protocol=,host=, port=,regexp=, flags=)
时间: 2024-11-05 04:49:39

SpringMVC 使用JSR-303进行校验 @Valid的相关文章

SpringMVC中的 JSR 303 数据校验框架说明

JSR 303 是java为Bean数据合法性校验提供的标准框架,它已经包含在JavaEE 6.0中. JSR 303 通过在Bean属性上标注类似于@NotNull.@Max等标准的注解指定校验规则, 并通过标准的验证接口对Bean进行验证: --------------------------------------------------------------------------- 注解 说明 ---------------------------------------------

SpringMVC中实现Bean Validation(JSR 303 JSR 349 JSR 380)

JSR 303是针对bean数据校验提出的一个规范.使用注解方式实现数据校验. 每个注解的用法这里就不多介绍,请移步JSR 303 - Bean Validation 介绍及最佳实践 笔者上面提到的JSR303是专家组成员向JCP提交的第一版Bean Validation, 主流Bean Validation使用Hibernate的实现,本文使用hibernate-validator 各个版本的规范对应关系如下: JSR 380 (Bean Validation 2.0) JSR 349 (Be

SpringMVC 数据转换 &amp; 数据格式化 &amp; 数据校验

数据绑定流程 1. Spring MVC 主框架将 ServletRequest 对象及目标方法的入参实例传递给 WebDataBinderFactory 实例,以创建 DataBinder 实例对象2. DataBinder 调用装配在 Spring MVC 上下文中的 ConversionService 组件进行数据类型转换.数据格式化工作.将 Servlet 中的请求信息填充到入参对象中3. 调用 Validator 组件对已经绑定了请求消息的入参对象进行数据合法性校验,并最终生成数据绑定

SpringMVC——数据转换 &amp; 数据格式化 &amp; 数据校验

一.数据绑定流程 1. Spring MVC 主框架将 ServletRequest 对象及目标方 法的入参实例传递给 WebDataBinderFactory 实例,以创 建 DataBinder 实例对象 2. DataBinder 调用装配在 Spring MVC 上下文中的 ConversionService 组件进行数据类型转换.数据格式 化工作.将 Servlet 中的请求信息填充到入参对象中 3. 调用 Validator 组件对已经绑定了请求消息的入参对象 进行数据合法性校验,并

JSR 303 - Bean Validation 介绍及最佳实践

JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案.2009 年 12 月 Java EE 6 发布,Bean Validation 作为一个重要特性被包含其中.本文将对 Bean Validation 的主要功能进行介绍,并通过一些示例来演示如何在 Java 开发过程正确的使用 Bean Validation. 1 评论: 安 大鹏, 软件工程师, IBM 杨 乐, 软件工程师, IBM 翁 志弘, 软件工程师, IBM 2011 年

JSR 303 - Bean Validation 简介及使用方法

一.JSR-303简介 JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator. 此实现与 Hibernate ORM 没有任何关系. JSR 303 用于对 Java Bean 中的字段的值进行验证. Spring MVC 3.x 之中也大力支持 JSR-303,可以在控制器中对表单提交的数据方便地验证. 注:可以使用注解的方式进行验证 二.准备校验时使用的JAR validation-api-1.0.

JSR 303 - Bean Validation 是什么?

关于 Bean Validation JSR 303 - Bean Validation 是jree6 中的一项子规范,JSR 303 - Bean Validation着重解决以下实际问题: 在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必 须要考虑和面对的事情.应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的.在通常的情况下,应用程序是分层的,不同的层由不同的开发人 员来完成.很多时候同样的数据验证逻辑会出现在不同的层,这样就会导致代码冗余和一些管理的问题,比如说

JSR 303标准

JSR 303是Java为bean数据合法性校验提供的标准框架,JSR 303通过在Bean属性上标注类似于@NotNull.@Max等标准的注解指定校验规则,并通过标准的校验接口对bean进行验证.可用注解的列表如下:

使用JSR 303和AOP简化你的接口开发

本文出处:http://blog.csdn.net/chaijunkun/article/details/44854071,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在原始出处查看此文. 前言 如今互联网项目都采用HTTP接口形式进行开发.无论是Web调用还是智能设备APP调用,只要约定好参数形式和规则就能够协同开发.返回值用得最多的就是JSON形式.服务端除了保证正常的业务功能,还要经常对传进来的参数进行验证,例如某些参数不能为空,字符串必须含有可见字符,数值

SpringMVC中使用Jcaptcha实现校验码验证

SpringMVC中使用Jcaptcha实现校验码验证:http://www.tuicool.com/articles/rMzAFj 本文将使用Jcaptcha实现校验码验证,并演示在Spring/SpringMVC环境下的使用方法. 1. maven依赖 注:请按需对需要排除的依赖进行增减 <dependency> <groupId>com.octo.captcha</groupId> <artifactId>jcaptcha-all</artifa