文档章节

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

l
 liuhao_sh
发布于 2015/08/27 16:51
字数 892
阅读 5993
收藏 14
点赞 0
评论 1

使用注解

一、准备校验时使用的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
博文 36
码字总数 99860
作品 0
徐汇
加载中

评论(1)

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

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

帅得拖网速 ⋅ 2016/09/01 ⋅ 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 ⋅ 4

Spring如何绑定请求参数或PathVariable参数绑定到对象,并做使用@Valid做JSR3

Spring如何绑定请求参数或PathVariable参数绑定到对象,并做使用@Valid做JSR303校验 问题描述 以前在Spring中只对@RequestBody映射的请求参数使用过@Valid做JSR303校验,RequestBody一般适用...

Tek_Eternal ⋅ 2015/03/14 ⋅ 3

Spring学习笔记(十四)

前言 最近工作,毕业设计都忙疯了,辞了工作现在终于有空余时间可以继续总结了 Spring数据校验 Spring有自己的校验框架,同时也支持JSR 303 的校验,这里主要介绍Spring使用JSR 303的校验,S...

casoc ⋅ 2014/03/26 ⋅ 1

SpringMVC与SiteMesh2.4无缝整合并借助JSR303规范实现表单验证

首先是web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s......

-wangming- ⋅ 2015/05/17 ⋅ 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 ⋅ 0

spring mvc 采用 jsr303 bean validation 校验框架

这是一个规范,定义了一些元素来进行bean的数据校验,比如 你的model有一个 user.java ,里面有一个email,当用户注册时候要验证email是否合法。 一般做法是js前端校验,但是不安全,作为完整...

executor ⋅ 2014/10/31 ⋅ 0

Spring MVC之@Valid校验

@Valid是使用hibernate validation的时候使用 看看下面的依赖就知道,Java的JSR303声明了这类接口,然后hibernate-validator对其进行了实现。 maven依赖包: controller 接口...

满小茂 ⋅ 2016/09/21 ⋅ 2

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

Spring MVC

Spring MVC一、什么是 Spring MVC Spring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面,是一个强大灵活的 Web 框架。Spring MVC 提供了一个 DispatcherServlet ...

任任任任师艳 ⋅ 2017/11/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JAVA RMI

什么是JAVA RMI Java RMI (Remote Method Invocation) 远程方法调用,能够让客户端像使用本地调用一样调用服务端 Java 虚拟机中的对象方法。RMI 是面向对象语言领域对 RPC (Remote Proced...

saulc ⋅ 14分钟前 ⋅ 0

Linux系统工程狮养成记

如今的社会,随着时代的发展,出现了很多职业,像电子类,计算机类的专业,出现了各种各样的工程师,有算法工程师,java工程师,前端工程师,后台工程师,Linux工程师,运维工程师等等,不同...

linux-tao ⋅ 25分钟前 ⋅ 0

进入编辑模式 vim命令模式 vim实践

1.

oschina130111 ⋅ 25分钟前 ⋅ 0

mysql用户管理、常用sql语句、mysql数据库备份恢复

1. mysql用户管理 mysql默认有一个root超级管理员账户,实际工作环境中不可能每个人都用此root权限,防止误操作、误删除,可以给单独的用户进行授权。 Mysql创建用户以及授权: grant all on...

laoba ⋅ 25分钟前 ⋅ 0

类型后面三个点(String...)和数组(String[])的区别

类型后面三个点(String…),是从Java 5开始,Java语言对方法参数支持一种新写法,叫可变长度参数列表,其语法就是类型后跟…,表示此处接受的参数为0到多个Object类型的对象,或者是一个Obj...

流氓兔- ⋅ 31分钟前 ⋅ 0

JEPLUS表格组件之表格合并——JEPLUS软件快速开发平台

JEPLUS表格组件之表格合并 我们在列表配置时会遇见这样的一种情况,需要对个人的数据进行统一化,对一些数据进行归类,这样展示出来美观又直观,在这篇笔记中我来给大家介绍下如何配置出来专...

JEPLUS ⋅ 32分钟前 ⋅ 0

golang 并发中全局唯一操作

package main// go 携程共享 数据// 加锁解锁操作// 同步锁import ("sync""fmt")// 创建Once结构var once = sync.Once{}func computed(data *int, lock *sync.Mut...

304158 ⋅ 33分钟前 ⋅ 0

Mobx入门之二:asynchronous actions

这一节主要看mobx怎么实现asynchronous actions 1 要实现的demo功能 输入地名,查询天气,利用openweathermap api 2 思想 observable观察数据:location地点、temperature温度 observer响应式...

pengqinmm ⋅ 35分钟前 ⋅ 0

【2018.0620学习笔记】【linux高级知识 13.4-13.6】

13.4 mysql用户管理 创建用户并授权: grant all on *.* to '用户名'@'ip' identified by '密码' //all是操作权限,*.*是库.表,指定格式是'用户名'@'localhost'才能用socket登录本地 gra...

lgsxp ⋅ 57分钟前 ⋅ 0

Java强弱引用示例

package jdk;import java.lang.ref.PhantomReference;import java.lang.ref.ReferenceQueue;import java.lang.ref.SoftReference;import java.lang.ref.WeakReference;public ......

月下狼 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部