SpringMVC课程之JSR303数据校验

1 如何校验

1) 使用JSR 303验证标准

2) 加入hibernate validator验证框架

3) 在SpringMVC配置文件中增加

4) 需要在bean的属性上增加对应验证的注解

5) 在目标方法bean类型的前面增加@Valid注解

2 JSR 303

是 Java 为 Bean 数据合法性校验提供的标准框架,它已经包含在 JavaEE 6.0 中 .

JSR 303 (Java Specification Requests意思是Java 规范提案)通过在 Bean 属性上标注

类似于 @NotNull、@Max 等标准的注解指定校验规则,并通过标准的验证接口对 Bean

进行验证

SpringMVC课程之JSR303数据校验

3 Hibernate Validator 扩展注解

Hibernate Validator 是 JSR 303 的一个参考实现,除支持所有标准的校验注解外,它还 支持以下的扩展注解

SpringMVC课程之JSR303数据校验

4 Spring MVC 数据校验

5 实验代码

hibernate-validator-5.0.0.CR2dist

hibernate-validator-5.0.0.CR2distlibrequired (EL就不需要加了)

public class Employee {
private Integer id;
@NotEmpty
private String lastName;
@Email
private String email;
//1 male, 0 female
private Integer gender;
private Department department;
//关于类型转换
@Past //被标注的日期必须是一个过去的日期
@DateTimeFormat(pattern=”yyyy-MM-dd”)
private Date birthDay ;
@NumberFormat(pattern=”#,###,###.#”)
private double salary ;
}
//添加员工
/** 增加@Valid注解,验证失败会报错。
* 严重: Servlet.service() for servlet springDispatcherServlet threw exception
java.lang.NoSuchMethodError: javax.el.ExpressionFactory.newInstance()Ljavax/el/ExpressionFactory;
*/
@RequestMapping(value=”/empAdd”,method=RequestMethod.POST)
public String empAdd(@Valid Employee employee,BindingResult bindingResult){
System.out.println(“empAdd – employee=”+employee);
if(bindingResult.getErrorCount() > 0 ){
System.out.println(“类型转换出错误了“);
List fieldErrors = bindingResult.getFieldErrors();
for(FieldError fieldError : fieldErrors){
System.out.println(fieldError.getField() + ” – ” + fieldError.getDefaultMessage());
}
}
employeeDao.save(employee);
return “redirect:/empList”;
}
SpringMVC课程之JSR303数据校验

SpringMVC课程之JSR303数据校验

拷贝hibernate-validator-5.0.0.CR2distlibrequired目录下的

el-api-2.2.jar、javax.el-2.2.4.jar、javax.el-api-2.2.4.jar

三个包到Tomcat/lib目录下,将原来的el-api.jar删除。重启tomcat6

@RequestMapping(value=”/empAdd”,method=RequestMethod.POST)
public String empAdd(@Valid Employee employee,BindingResult bindingResult){
System.out.println(“empAdd – employee=”+employee);
if(bindingResult.getErrorCount() > 0 ){
System.out.println(“类型转换出错误了”);
List fieldErrors = bindingResult.getFieldErrors();
for(FieldError fieldError : fieldErrors){
System.out.println(fieldError.getField() + ” – ” + fieldError.getDefaultMessage());
}
map.put(“deptList”,departmentDao.getDepartments());
return “add”; // /WEB-INF/views/add.jsp
}
employeeDao.save(employee);
return “redirect:/empList”;
}

想要了解更多关于Java技术知识欢迎关注尚硅谷教育!


java 枚举的定义与用法

Java 数据结构都有哪些

java中单例设计模式

java技术事务的传播行为

java高频面试题-设计模式

展开阅读全文

页面更新:2024-04-03

标签:数据   注解   表单   绑定   框架   属性   接口   命令   定义   对象   声明   错误   类型   课程   标准   方法   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top