Spring3.x JSR-303
JSR303介绍
JSR303-Bean Validation描述:This JSR will define a meta-data model and API for JavaBeanTM validation based on annotations, with overrides and extended meta-data through the
use of XML validation descriptors. 为实体验证定义了元数据模型和API.默认的元数据模型是通过Annotations来描述的,也可以使用XML来重载或扩展。
Bean Validation API并不局限于应用程序的某一层或者哪种编程模型。Bean Validation可以被用在任何一层。
Spring3.x已提供对JSR303的支持。
JSR303常用注解说明:
@NotNull/@Null
验证字段:引用数据类型
注解说明:注解元素必须是非空或空
@Digits
验证字段:byte、short、int、long及各自的包装类型以及BigDecimal、BigInteger、String
注解说明:验证数字构成是否合法
属性说明:integer:指定整数部分数字位数,fraction:指定小数部分数字位数
@Future/Past
验证字段:java.util.Date,java.util.Calendar
注解说明:验证是否在当前系统时间之后/之前
@Max/@Min
验证字段:byte、short、int、long及对应的包装类型以及BigDecimal、BigInteger
注解说明:验证值是否小于等于最大指定整数值或大于等于最小指定整数值
@Pattern
验证字段:String
注解说明:验证字符串是否匹配指定的正则表达式
属性说明:regexp:匹配的正则表达式,flags:指定Pattern.Flag的数值,表示正则表达式的选项
@Size
验证字段:String、Collection、Map和数组
注解说明:验证元素大小是否在指定范围内
属性说明:max:最大长度,min:最小长度,message:提示信息,默认:{constraint.size}
@DecimalMax/@DecimalMin
验证字段:byte、short、int、long及对应的包装类型以及BigDecimal、BigInteger、String
属性说明:验证值是否小于等于最大指定小数值或大于等于最小指定小数值
@Valid
属性说明:验证值是否需要递归调用
例子:
下面的例子在Spring3.1中测试通过
需要导入jar:javax.validation-1.0.0.jar 和hibernate-validation-4.3.0.jar
User类:
- /**
- * 用户
- *
- * @author Administrator
- */
- public class User implements Serializable {
- private static final long serialVersionUID = 5383162329852182189L;
- @NotEmpty(message = "用户名不能为空") // hibernate的验证注解,因为Spring页面中文本传过来的都是空字符串而不是空内容
- @Id
- private String userName; // 用户名
- @Size(min = 5, max = 32, message = "密码长度应在5-32位之间")
- private String password; // 密码
- private String role; // 对应角色
- private String loginIP; // 登录Ip
- /**
- * 得到用户名
- *
- * @return 用户名
- */
- public String getUserName() {
- return userName;
- }
- /**
- * 设置用户名
- *
- * @param userName
- * 用户名
- */
- public void setUserName(String userName) {
- this.userName = userName;
- }
- /**
- * 得到登陆密码
- *
- * @return 登陆密码
- */
- public String getPassword() {
- return password;
- }
- /**
- * 设置登陆密码
- *
- * @param password
- * 登陆密码
- */
- public void setPassword(String password) {
- this.password = password;
- }
- /**
- * 得到用户角色
- *
- * @return 用户角色
- */
- public String getRole() {
- return role;
- }
- /**
- * 设置用户角色
- *
- * @param role
- * 用户角色
- */
- public void setRole(String role) {
- this.role = role;
- }
- /**
- * 得到登录IP
- *
- * @return 登录IP
- */
- public String getLoginIP() {
- return loginIP;
- }
- /**
- * 设置登录IP
- *
- * @param loginIP
- * 登录IP
- */
- public void setLoginIP(String loginIP) {
- this.loginIP = loginIP;
- }
- }
页面请求的方法:
- public String login(@Valid User user, BindingResult result,
- HttpServletRequest request, Model model) {
- if (result.hasErrors()) {
- return "login";
- }
- return "success"
- }
在配置文件中需要对验证对象所在包进行扫描
<property name="packagesToScan" value="package.path" />
Spring3.x JSR-303的更多相关文章
- JSR 303标准
JSR 303是Java为bean数据合法性校验提供的标准框架,JSR 303通过在Bean属性上标注类似于@NotNull.@Max等标准的注解指定校验规则,并通过标准的校验接口对bean进行验证. ...
- JSR 303 - Bean Validation 介绍及最佳实践
JSR 303 - Bean Validation 介绍及最佳实践 JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案.2009 年 12 月 ...
- Springboot 使用 JSR 303 对 Controller 控制层校验及 Service 服务层 AOP 校验,使用消息资源文件对消息国际化
导包和配置 导入 JSR 303 的包.hibernate valid 的包 <dependency> <groupId>org.hibernate.validator< ...
- JSR教程1——JSR 303 - Bean Validation介绍
1.Bean Validation 在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情.应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的.在通常的情况下, ...
- SpringMVC中的 JSR 303 数据校验框架说明
JSR 303 是java为Bean数据合法性校验提供的标准框架,它已经包含在JavaEE 6.0中. JSR 303 通过在Bean属性上标注类似于@NotNull.@Max等标准的注解指定校验规则 ...
- JSR 303 - Bean Validation 介绍及最佳实践(转)
JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案.2009 年 12 月 Java EE 6 发布,Bean Validation 作为一个 ...
- JSR 303 - Bean Validation 是什么?
关于 Bean Validation JSR 303 - Bean Validation 是jree6 中的一项子规范,JSR 303 - Bean Validation着重解决以下实际问题: 在任何 ...
- JSR 303 - Bean Validation 模型验证
类是转载的,不知道转的哪里的. 此类依赖 JSR 303 – Bean Validation, Hibernate Validator. 代码不能直接运行.意会一下.自己改改. import com. ...
- JSR 303 - Bean Validation 简单介绍及用法
一.JSR-303简单介绍 JSR-303 是 JAVA EE 6 中的一项子规范.叫做 Bean Validation,官方參考实现是Hibernate Validator. 此实现与 Hibern ...
- SpringMVC中实现Bean Validation(JSR 303 JSR 349 JSR 380)
JSR 303是针对bean数据校验提出的一个规范.使用注解方式实现数据校验. 每个注解的用法这里就不多介绍,请移步JSR 303 - Bean Validation 介绍及最佳实践 笔者上面提到的J ...
随机推荐
- Linux 进程管理 进程优先级管理
Linux进程优先级 Linux 是一个多用户.多任务的操作系统,系统中通常运行着非常多的进程.但是 CPU 在一个时钟周期内只能运算一条指令(现在的 CPU 采用了多线程.多核心技术,所以在一个时钟 ...
- Linux curl命令参数详解(6/23)
linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态. 在Linux中c ...
- GPL协议本身就是剥削,oracle维权玩的让人恶心
我们先来看一下MySQL的版权问题.当前,MySQL采用双重授权(Dual Licensed),他们是GPL和MySQL AB制定的商业许可协议.如果你在一个遵循GPL的自由(开源)项目中使用MyS ...
- 【纯代码】Swift相册照片选择-支持单选或多选
// // NAPublishAlbumTableViewController.swift //// // Created by on 2019/3/23. // Copyright © 2019年 ...
- linux新手学习之Arch Linux入门经验分享
我一直是以Ubuntu与Fedora作为新手入门的系统,但是其实我真正想推荐的是Arch,经过前面的学习,或许你对Linux已经有了一个大致的了解,现在如果你想加速你的步伐,也许可以看看本文.如果要问 ...
- MongoDB快速入门(十)- Limit(),Skip() 方法
Limit() 方法 要限制 MongoDB 中的记录,需要使用 limit() 方法. limit() 方法接受一个数字型的参数,这是要显示的文档数. 语法: limit() 方法的基本语法如下 & ...
- HDU 1263 二维map
题意:给出一份水果的交易表,根据地区统计出水果的交易情况. 思路:二维map使用. #include<cstdio> #include<string> #include ...
- Luogu-3250 [BJOI2017]魔法咒语(AC自动机,矩阵快速幂)
Luogu-3250 [BJOI2017]魔法咒语(AC自动机,矩阵快速幂) 题目链接 题解: 多串匹配问题,很容易想到是AC自动机 先构建忌讳词语的AC自动机,构建时顺便记录一下这个点以及它的所有后 ...
- Graph_Master(连通分量_B_Trajan+完全图)
hdu_4635 题目大意:给出一张DAG(n个点,m条边),求出能加的最大边数,使得该图无重边,无自环,非强连通. 题解:这题题面很好理解,也没有什么很难的点,主要是如何求出最大边数需要动点脑筋.首 ...
- scala mapPartitionsWithIndex函数的使用
var rdd1=sc.makeRDD(Array((1,"A"),(2,"B"),(3,"C"),(4,"D")),2 ...