Spring3.x JSR-303
2016-03-17 11:12
375 查看
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类:
[java]
view plain
copy
/**
* 用户
*
* @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;
}
}
页面请求的方法:
[java]
view plain
copy
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" />
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类:
[java]
view plain
copy
/**
* 用户
*
* @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;
}
}
页面请求的方法:
[java]
view plain
copy
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
- Java day05 final 关键字
- spring3定时器简单配置
- Java day04 生成工具类文档
- java下的printf(jdk1.5+)
- Java day04 静态static,静态代码块
- java线程sleep()和wait()的区别
- springmvc配置一:ajax请求防止返回中文乱码配置说明
- Android Studio导入Eclipse的library工程
- java运算符优先级
- ubuntu安装jdk
- java同步代码块和同步方法的区别
- Ubuntu+Eclipse+ADT+Genymotion+VirtualBox开发环境搭建
- Java8中的简易并发
- JAVA_WEB学习经验总结
- JAVA学习 之 异常处理
- Java day04 匿名对象
- Java Web Session 登录实例
- Java day04 构造函数 ,构造代码块
- java.lang.NoSuchMethodException: com.xxx.xxx.xxx<init>()