文档章节

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

l
 liuhao_sh
发布于 2015/08/27 16:51
字数 892
阅读 6030
收藏 14

使用注解

一、准备校验时使用的JAR

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

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

log4j、slf4j、slf4j-log4j

二、编写需要校验的bean

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

三、校验方法

@RequestMapping("/login")     
public String testValid(@Valid User user, BindingResult result){         
    if (result.hasErrors()){             
        List<ObjectError> errorList = result.getAllErrors();             
        for(ObjectError error : errorList){                 
            System.out.println(error.getDefaultMessage());             
        }         
    }                     
         return "test";     
 }

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

 

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

spring标签库的用法:


<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>       <html>    <head>    <title>Reservation Form</title>    <style>    .error {        color: #ff0000;        font-weight: bold;    }    </style>    </head>       <body>        <form:form method="post" modelAttribute="vm">            <form:errors path="*" cssClass="error" />            <table>                <tr>                    <td>Name</td>                    <td><form:input path="userName" />                    </td>                    <td><form:errors path="userName" cssClass="error" />                    </td>                </tr>                <tr>                    <td>email</td>                    <td><form:input path="email" />                    </td>                    <td><form:errors path="email" cssClass="error" />                    </td>                </tr>                        <tr>                    <td colspan="3"><input type="submit" />                    </td>                </tr>            </table>        </form:form>    </body>    </html>

 

四、开启spring的Valid功能

<mvc:annotation-driven />

 

五、JSR303定义的校验类型

复制代码

空检查

@Null       验证对象是否为null

@NotNull    验证对象是否不为null, 无法查检长度为0的字符串

@NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.

@NotEmpty 检查约束元素是否为NULL或者是EMPTY.

 

Booelan检查

@AssertTrue     验证 Boolean 对象是否为 true  

@AssertFalse    验证 Boolean 对象是否为 false  

 

长度检查

@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内  

@Length(min=, max=) Validates that the annotated string is between min and max included.

 

日期检查

@Past           验证 Date 和 Calendar 对象是否在当前时间之前  

@Future     验证 Date 和 Calendar 对象是否在当前时间之后  

@Pattern    验证 String 对象是否符合正则表达式的规则

 

数值检查,建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为“”时无法转换为int,但可以转换为Stirng为"",Integer为null

@Min            验证 Number 和 String 对象是否大等于指定的值  

@Max            验证 Number 和 String 对象是否小等于指定的值  

@DecimalMax 被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度

@DecimalMin 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度

@Digits     验证 Number 和 String 的构成是否合法  

@Digits(integer=,fraction=) 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。

 

@Range(min=, max=) Checks whether the annotated value lies between (inclusive) the specified minimum and maximum.

@Range(min=10000,max=50000,message="range.bean.wage")
private BigDecimal wage;

 

@Valid 递归的对关联对象进行校验, 如果关联对象是个集合或者数组,那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.(是否进行递归验证)

@CreditCardNumber信用卡验证

@Email  验证是否是邮件地址,如果为null,不进行验证,算通过验证。

@ScriptAssert(lang= ,script=, alias=)

@URL(protocol=,host=, port=,regexp=, flags=)

复制代码

 

6、自定义校验类型

可以参考:http://exceptioneye.iteye.com/blog/1305040

 

使用接口

可以参考:http://elf8848.iteye.com/blog/1299587


© 著作权归作者所有

共有 人打赏支持
l
粉丝 1
博文 75
码字总数 99860
作品 0
徐汇
加载中

评论(1)

p2ng
p2ng
提示文字可以搞国际化不
如何使用SpringMVC进行数据校验

前言: SpringMVC数据校验采用JSR-303校验。 • Spring 4.0 拥有自己独立的数据校验框架,同时支持 JSR 303 标准的校验框架。 • Spring 在进行数据绑定时,可同时调用校验框架完成数据校 验...

帅得拖网速
2016/09/01
574
0
SpringMVC 支持Hibernate Validator

一、基础框架 SpringMVC-4.0.3.RELEASE,使用的maven来管理jar依赖 二、依赖的jar, <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <versio......

BravoZu
2014/08/04
0
4
7:spring mvc 数据验证

注解式数据验证 Spring3 开始支持JSR-303 验证框架,JSR-303 支持XML 风格的和注解风格的验证,接下来我们首先看一下如何和Spring集成。 1、添加jar 包: 此处使用Hibernate-validator 实现...

小杰java
2017/10/18
0
0
Spring 3 MVC and JSR303 @Valid example

In Spring 3, you can enable “mvc:annotation-driven” to support JSR303 bean validation via annotation, if any JSR 303 validator framework on the classpath. Note Hibernate Vali......

凯文加内特
2015/10/10
116
0
springMVC 高级2 之 valadation

1 validation Spring3支持JSR-303验证框架,JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,官方参考实现是Hibernate Validator(与Hibernate ORM 没有关系),JSR 303 用于对J...

龙之天空
2015/11/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

c语言之内存分配笔记

先看一个数组: short array[5] = {1,2} // 这儿定义的一个int类型的数组,数组第1和第2个元素值是1和2.其余后面默认会给值为0; 或者 short array[] = {1,2};//这儿数组第1和第2个元素,数组...

DannyCoder
今天
2
0
Shell | linux安装包不用选择Y/N的方法

apt-get install -y packageOR echo "y" | sudo apt-get install package

云迹
今天
2
0
Hadoop的大数据生态圈

基于Hadoop的大数据的产品圈 大数据产品的一句话概括 Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架...

zimingforever
今天
5
0
八大包装类型的equals方法

先看其中一个源码 结论:八大包装类型的equals方法都是先判断类型是否相同,不相同则是false,相同则判断值是否相等 注意:包装类型不能直接用==来等值比较,否则编译报错,但是数值的基本类型...

xuklc
今天
2
0
NoSQL , Memcached介绍

什么是NoSQL 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗...

TaoXu
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部