springMVC中validation校验案例
来源:互联网 发布:求推荐淘宝美国代购店 编辑:程序博客网 时间:2024/05/30 23:48
springMVC中validation校验案例
validation校验相比于大部分前台js校验更加简单,因为在后台进行校验,安全性较高
1、导入支持的jar包
2、配置springMVC.xml
(1)不使用映射器和适配器的情况下
<!-- 可以替代映射器和适配器 --> <mvc:annotation-driven validator="validator"/> <!-- 校验器 --> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <!-- 注入Hibernate校验器 --> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> <!-- 指定校验所使用的资源文件,如果不指定默认使用classes下面的 --> <property name="validationMessageSource" ref="messageSource"/> </bean> <!-- 校验错误信息配置文件 --> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <!-- 资源文件名 --> <property name="basenames"> <list> <value> classpath:CustomValidationMessages </value> </list> </property> <!-- 资源文件的编码格式 --> <property name="fileEncodings" value="utf-8"/> <!-- 对资源文件缓冲时间 --> <property name="cacheSeconds" value="120"/> </bean>
(2)使用映射器和适配器的情况
<!-- 注解映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <!-- 注解适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <!-- 引用自定义属性编辑器 --> <property name="webBindingInitializer" ref="customBinder"/> </bean> <!-- 自定义的属性编辑器 --> <bean id="customBinder" class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"> <property name="validator" ref="validator"/> </bean> <!-- 校验器 --> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <!-- 注入Hibernate校验器 --> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> <!-- 指定校验所使用的资源文件,如果不指定默认使用classes下面的 --> <property name="validationMessageSource" ref="messageSource"/> </bean> <!-- 校验错误信息配置文件 --> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <!-- 资源文件名 --> <property name="basenames"> <list> <value> classpath:CustomValidationMessages </value> </list> </property> <!-- 资源文件的编码格式 --> <property name="fileEncodings" value="utf-8"/> <!-- 对资源文件缓冲时间 --> <property name="cacheSeconds" value="120"/> </bean>
3、创建CustomValidationMessages.properties
4、校验规则
在实体类中加入注解
public class User { private Integer uid; // 商品名称长度限制在1-30之间 @Size(min = 1, max = 30, message = "{user.name.length.error}") private String username; @Size(min = 1, max = 30, message = "{user.password.length.error}") private String password; private String context; // 创建时间不能为空 // 通过groups制定该校验属于哪个分组,可以制定多个分组 @NotNull(message = "{user.createtime.is.notnull}", groups = { ValidGroup1.class }) private Date createtime;
5、捕获异常的方法
@RequestMapping("inserUser") // 每个需要校验的pojo前面都需要加Validdated,后面都加BindingResult bindingResult public String insertUser(@Validated User user, BindingResult bindingResult, Model model) { // 如果校验中存在错误 if (bindingResult.hasErrors()) { List<ObjectError> errors = bindingResult.getAllErrors(); // 将错误信息放入ModelAndView中 model.addAttribute("errors", errors); for (ObjectError objectError : errors) { // 输出错误信息到控制台 System.out.println(objectError.getDefaultMessage()); } // 跳转回添加页面 return "user/user_add"; }
6、在页面简单展示错误信息
<c:forEach items="${errors }" var="e"> ${e.defaultMessage }</c:forEach>
7、分组校验
某些方法只想校验部分属性时使用
(1)创建分组接口
package com.yy.controller.validation;/** * 校验分组:用于修改的校验 * * @author 杨扬 2017-3-21下午8:09:33 */public interface ValidGroup1 { // 接口不定义方法,只定义标识哪些校验规则属于ValidGroup1}
(2)通过groups在po类中确定分组
// 通过groups制定该校验属于哪个分组,可以制定多个分组 @NotNull(message = "{user.createtime.is.notnull}", groups = { ValidGroup1.class }) private Date createtime;
(3)在controller的方法中定义使用校验的分组
// 在@ValidTed(value={}),在value中定义ValidGroup1分组的校验 public String insertUser( @Validated(value = { ValidGroup1.class }) User user, BindingResult bindingResult, Model model) {
3 0
- springMVC中validation校验案例
- SpringMVC教程--Validation校验
- SpringMVC—Validation校验
- springmvc注解开发-validation校验
- springmvc使用校验框架validation校验
- 【SpringMVC整合MyBatis】validation校验-分组校验
- springmvc注解开发-validation校验-分组校验
- springmvc服务端校验hibernate validation配置
- springmvc使用Hibernate的校验框架validation
- springmvc利用validation框架实现数据校验
- springmvc使用hibernate-validation校验器异常
- springMVC中Validation介绍
- SpringMVC中Controller使用Validation的参数校验和统一处理参数异常
- 【SpringMVC整合MyBatis】validation校验-商品修改校验
- springmvc注解开发-validation校验-商品修改校验
- springmvc中服务端校验
- springmvc中数据校验
- SpringMVC validation完成后端数据校验(较全面)
- 提升SQLite数据插入效率低、速度慢的方法
- display:table-cell的用法
- 启动Android模拟器后,在file Explorer中看不到任何文件
- @within @annotion @target 的区别
- C++ 学习笔记
- springMVC中validation校验案例
- RocketMQ(一)介绍
- webview重写 shouldOverrideUrlLoading,在部分手机上不能拦截?
- CSU 1848:3-sided dice 高斯消元(2010 Southwestern European Regional Contest)
- FastDFS FAQ
- 多线程_定时删除指定的带内容目录
- 【问题解决】Packet for query is too large (1165 > 1024). You can change this value
- Java 8 时间日期库的20个使用示例
- C++数据成员必须在构造函数初始化列表中初始化