springmvc校验
2016-02-18 19:26
429 查看
springmvc校验使用hibernate的校验框架validation
校验思路:
页面提交请求的参数,请求到controller方法中,使用validation进行校验。如果校验出错,将错误信息展示到页面。
小小实例:
商品修改,添加校验(检验商品名称长度,生产日期的非空校验),如果校验出错,在商品修改页面显示错误信息。
1、环境准备
validation校验框架所需要的jar包:
2、在springmvc.xml配置校验器并且将检验器注入到处理器适配器中
3、在pojo中添加校验规则
4、在CustomValidationMessages.properties配置校验错误信息
5、捕获校验错误信息 ItemsController.java
6、在页面显示校验错误信息,在controller类中将错误信息传到页面即可
7、页面显示错误信息
校验思路:
页面提交请求的参数,请求到controller方法中,使用validation进行校验。如果校验出错,将错误信息展示到页面。
小小实例:
商品修改,添加校验(检验商品名称长度,生产日期的非空校验),如果校验出错,在商品修改页面显示错误信息。
1、环境准备
validation校验框架所需要的jar包:
2、在springmvc.xml配置校验器并且将检验器注入到处理器适配器中
<pre name="code" class="html"> <!-- 校验器 --> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <!-- hibernate校验器 --> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property> <!-- 指定校验使用的资源文件,在文件中配置校验错误信息 ,如果不指定则默认使用classpath下的ValidationMessages.properties--> <property name="validationMessageSource" ref="messageSource"/> </bean> <!-- 校验错误信息配置文件 --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <!-- 资源文件名 --> <property name="basenames"> <list> <value>classpath:CustomValidationMessage</value> </list> </property> <!-- 资源文件编码格式 --> <property name="fileEncodings" value="utf-8"/> <!-- 对资源文件内容缓存时间,单位秒 --> <property name="cacheSeconds" value="120"/> </bean>
<mvc:annotation-driven conversion-service="conversionService" validator="validator" ></mvc:annotation-driven>
3、在pojo中添加校验规则
package org.ssm.po; import java.util.Date; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; public class Items { private Integer id; //校验名称在1到30字符中间 //message是提示校验出错显示的信息 //groups:此校验属于哪个分组,groups可以定义多个分组 @Size(min=1, max=30, message="{items.name/length.error}") private String name; private Float price; private String pic; //非空校验 @NotNull(message="{items.createtime.isNULL}") private Date createtime; private String detail; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name == null ? null : name.trim(); } public Float getPrice() { return price; } public void setPrice(Float price) { this.price = price; } public String getPic() { return pic; } public void setPic(String pic) { this.pic = pic == null ? null : pic.trim(); } public Date getCreatetime() { return createtime; } public void setCreatetime(Date createtime) { this.createtime = createtime; } public String getDetail() { return detail; } public void setDetail(String detail) { this.detail = detail == null ? null : detail.trim(); } }
4、在CustomValidationMessages.properties配置校验错误信息
#添加校验错误提交信息 items.name.length.error=请输入1到30个字符的商品名称 items.createtime.isNULL=请输入商品的生产日期
5、捕获校验错误信息 ItemsController.java
@RequestMapping("/editItemsSubmit") public String editItemsSubmit(HttpServletRequest request, Integer id, @Validated ItemsCustom itemsCustom, BindingResult bindingResult)throws Exception{ //在需要校验的pojo前面添加@Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息 //注意:@validated和BindingResult bindingResult是配对出现,并且形参顺序是固定的(一前一后) //... return null; }
6、在页面显示校验错误信息,在controller类中将错误信息传到页面即可
@RequestMapping("/editItemsSubmit") public String editItemsSubmit(Model model, HttpServletRequest request, Integer id, @Validated ItemsCustom itemsCustom, BindingResult bindingResult)throws Exception{ //在需要校验的pojo前面添加@Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息 //注意:@validated和BindingResult bindingResult是配对出现,并且形参顺序是固定的(一前一后) //... //获取校验错误信息 if(bindingResult.hasErrors()){ //输出错误信息 List<ObjectError> allErrors = bindingResult.getAllErrors(); for(ObjectError objectError:allErrors){ //输出错误信息 System.out.println(objectError.getDefaultMessage()); } //将错误信息传到页面 model.addAttribute("allErrors", allErrors); return "items/editItems"; } return "success"; }
7、页面显示错误信息
<!-- 显示错误信息 --> <c:if test="${allErrors != null}"> <c:forEach items="${allErrors}" var="error">${error.defaultMessage}</c:forEach> </c:if>
相关文章推荐
- 安装Maven3时出现Exception in thread "main" java.lang.UnsupportedClassVersionError
- Java基础了解
- Java,背景,组成
- Java回调机制
- javaweb基础学习(四)<jstl>
- javaweb(三)<session cookie>
- Java 线程池 ThreadPoolExecutor 源码分析
- Eclipse 中打开工程目录的插件
- java批量生成excel代码分享
- spark将数据保存到elasticsearch,老是爆java.lang.StringIndexOutOfBoundsException: String index out of range: -1
- eclipse 创建 maven web 项目
- 精选30道Java笔试题解答
- RxJava 创建操纵符 range
- SpringMVC深度探险(1,2,3,4)Spring源码阅读:Spring MVC 初始化 - 螺 丝 钉 / DispatcherServlet的初始化主线
- JAVA的 WebService规范 JAX-WS实现例子
- Java从Spring中获取Bean
- 使用java Reflection机制使单例模式不再只有一个对象的实例
- Struts2国际化详细配置说明
- Java小项目迷你图书管理系统
- Java数组索引元素下标快速高效的方法