SpringMVC使用hibrenate validation进行验证
来源:互联网 发布:办公室神器 知乎 编辑:程序博客网 时间:2024/05/22 11:44
本文有两点需要注意:
- 本文只讲述跟验证有关的代码,如果对其他springmvc不熟悉请先自行学习
- 本文将验证Book类中的name长度为2到10,isbn必须为13位
首先添加需要用到hibrenate的validation JAR包
百度云下载地址 链接:http://pan.baidu.com/s/1pJusKEv 密码:k6u9
用到的一个测试POJO类Book
package com.elin4it.ssm.pojo;import org.hibernate.validator.constraints.NotEmpty;import sun.security.util.Length;import javax.validation.constraints.Size;/** * Description: Book * Author: Elin Zhou * Create: 2015-07-03 21:43 */public class Book { private String name; private String isbn; public String getIsbn() { return isbn; } public void setIsbn(String isbn) { this.isbn = isbn; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Book{" + "isbn='" + isbn + '\'' + ", name='" + name + '\'' + '}'; }}
两个jsp页面,一个用来显示form,一个是成功后的显示界面
addBook.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%-- Created by IntelliJ IDEA. User: elin Date: 15-7-3 Time: 下午3:11 To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title></title></head><body> <form action="<%=request.getContextPath()%>/book/addBookHandle" method="post"> 书名:<input type="text" name="name"><br> ISBN:<input type="text" name="isbn"><br> <input type="submit" value="提交"><br> </form></body></html>
success.jsp
<%-- Created by IntelliJ IDEA. User: elin Date: 15-7-3 Time: 下午9:08 To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title></title></head><body><h1>SUCCESS</h1></body></html>
- 在springmvc配置文件中配置用于验证的bean
springmvc配置文件需要两步工作,先创建bean,然后配置之
<!--validation--> <bean id="validatorFactory" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> <property name="validationMessageSource" ref="messageSource"/> </bean> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basenames"> <list> <!--验证提示信息配置文件,不需要些.properties--> <value>classpath:com/elin4it/ssm/config/validationMessage</value> </list> </property> <!--默认编码--> <property name="defaultEncoding" value="utf-8"/> <!--缓存时间--> <property name="cacheSeconds" value="120"/> </bean>
然后需要在annotation-driven配置bean
<mvc:annotation-driven validator="validatorFactory"></mvc:annotation-driven>
- 添加验证提示信息文件
根据配置bean的时候写的路径与文件名配置提示信息文件,这里只验证书名和ISBN长度
book.name.notEmpty=书名不能为空book.isbn.size.error=ISBN必须为13位
- 在POJO中添加验证规则
属性的验证规则在POJO的变量定义前添加注解
所以在POJO指定位置修改为如下
@NotEmpty(message = "{book.name.notEmpty}")private String name;@Size(min = 13,max = 13,message = "{book.isbn.size.error}")private String isbn;
其中message中是在之前的提示信息文件中的定义的键名
- 在controller中接受验证结果
接受验证信息需要注意两点
第一:在form提交时接收的POJO形参名前添加@Validated注解
第二:在controller方法的形参中添加BindingResult 类型的参数
通过调用BindingResult .hasErrors()可以得到是否有错误产生
BindingResult.getAllErrors()得到所有的ObjectError类型的错误
ObjectError.getDefaultMessage()得到错误的信息
controller验证方法代码如下
@RequestMapping("/addBookHandle")public ModelAndView addBookHandel(@Validated Book book,BindingResult bindingResult){ ModelAndView modelAndView = new ModelAndView(); if (bindingResult.hasErrors()){ //得到所有的错误 List<ObjectError> errors = bindingResult.getAllErrors(); for (ObjectError objectError:errors){ //打印错误信息 System.out.println(objectError.getDefaultMessage()); } modelAndView.addObject(book); //如果产生错误则跳转的原页面 modelAndView.setViewName("book/addBook"); }else{ modelAndView.setViewName("success"); } return modelAndView;}
有时候,要验证的属性不是一成不变的,有时候只需要验证书名,有时候只需要验证ISBN,所以需要对验证规则进行分组。
根据要分的组数,定义几个java类,不需要继承类或实现接口,类中也不需要任何内容
比如现在创建ValidateType1和ValidateType2
然后在POJO类中定义规则的时候定义其group属性,例如
@NotEmpty(message = "{book.name.notEmpty}",groups = ValidationType1.class)private String name;@Size(min = 13,max = 13,message = "{book.isbn.size.error}",groups = ValidationType2.class)private String isbn;
然后在对应的controller方法的@Validated注解中添加需要执行的验证规则,如
public ModelAndView addUserHandle(@Validated(ValidationType1.class) User user,BindingResult bindingResult)
那么在这个方法中,只会对书名进行验证了。
0 0
- SpringMVC使用hibrenate validation进行验证
- springmvc 使用validation验证!
- SpringMVC 之 Validation介绍—— 使用Validator接口进行验证
- struts2中使用xml进行validation验证
- 使用JSR-303 Validation进行验证
- SpringMVC数据验证--Validation
- Hibrenate中如何使用Like进行查询
- SpringMVC结合Validation api 和Hibernate validation进行校验不提示验证错误信息
- SpringMVC 使用验证框架 Bean Validation(上)
- SpringMVC 使用验证框架 Bean Validation(下)
- 使用SpringMVC数据验证框架validation做数据校验
- jQuery Validation中使用remote属性进行异步验证
- SpringMVC验证框架Validation分组验证
- SpringMVC使用@Valid注解进行数据验证
- SpringMVC使用@Valid注解进行数据验证
- SpringMVC验证框架Validation特殊用法
- SpringMVC验证框架Validation特殊用法
- SpringMVC验证框架Validation特殊用法
- 自开发实现Quartz Web管理
- 反汇编一个简单的C程序并分析
- 旋转数组的最小数字
- 计算机系统
- 20150629_UI之坐标系及UILabel的练习
- SpringMVC使用hibrenate validation进行验证
- Android学习长按列表项弹出菜单 给菜单项添加事件 获取上下文
- foundation-NSDate
- Android 布局之RelativeLayout
- Word标题怎么更改
- 神经网络之感知器准则,delta准则
- 多线程(C++)临界区Critical Sections问题
- JSON格式验证规范--JSON-SCHEMA
- impdp时卡住,DW等待library cache lock