SpringMVC使用@Valid注解进行数据验证
SpringMVC使用@Valid注解进行数据验证
我们在做Form表单提交的时候,只在前端做数据校验是不够安全的,所以有时候我们需要在后端同样做数据的校验。好在SpringMVC在后台验证给我们提供了一个比较好的支持。那就是使用Valid接口的实现类做数据校验。在这之前我们先做一下准备的工作。
添加相关的Maven依赖
- <dependency>
- <groupId>javax.validation</groupId>
- <artifactId>validation-api</artifactId>
- <version>1.1.0.Final</version>
- </dependency>
- <dependency>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-jsr303</artifactId>
- <version>0.5</version>
- </dependency>
实现Validator接口
- package com.zkn.learnspringmvc.validtor;
- import com.zkn.learnspringmvc.scope.PersonScope;
- import org.springframework.util.StringUtils;
- import org.springframework.validation.Errors;
- import org.springframework.validation.ValidationUtils;
- import org.springframework.validation.Validator;
- /**
- * Created by wb-zhangkenan on 2016/9/2.
- */
- public class PersonalValidtor implements Validator{
- /**
- * 判断支持的JavaBean类型
- * @param aClass
- * @return
- */
- @Override
- public boolean supports(Class<?> aClass) {
- return PersonScope.class.equals(aClass);
- }
- /**
- * 实现Validator中的validate接口
- * @param obj
- * @param errors
- */
- @Override
- public void validate(Object obj, Errors errors) {
- //把校验信息注册到Error的实现类里
- ValidationUtils.rejectIfEmpty(errors,"name",null,"姓名不能为空!");
- PersonScope personScope = (PersonScope) obj;
- if(StringUtils.isEmpty(personScope.getAddress())){
- errors.rejectValue("address",null,"家庭地址不能为空!!!!");
- }
- }
- }
使用Validtor的校验实现类
- //绑定PersonalValidator
- @InitBinder
- public void initBinder(WebDataBinder webDataBinder){
- webDataBinder.addValidators(new PersonalValidtor());
- }
接下来我们需要在@RequestMapping这个注解所在的方法上使用@Valid注解进行数据的校验。
- @RequestMapping(value = "testPersonalValidtor.do")
- @ResponseBody
- //直接返回对象
- public Object testPersonalValidtor(@Valid PersonScope personScope, BindingResult bindingResult){
- if(bindingResult.hasErrors()){
- StringBuffer sb = new StringBuffer();
- for(ObjectError objectError : bindingResult.getAllErrors()){
- sb.append(((FieldError)objectError).getField() +" : ").append(objectError.getDefaultMessage());
- }
- return sb.toString();
- }else{
- return personScope;
- }
- }
接下来我们来看一下效果:
SpringMVC使用@Valid注解进行数据验证的更多相关文章
- SpringMVC数据验证
SpringMVC数据验证——第七章 注解式控制器的数据验证.类型转换及格式化——跟着开涛学SpringMVC 资源来自:http://jinnianshilongnian.iteye.com/blo ...
- spring(7)--注解式控制器的数据验证、类型转换及格式化
7.1.简介 在编写可视化界面项目时,我们通常需要对数据进行类型转换.验证及格式化. 一.在Spring3之前,我们使用如下架构进行类型转换.验证及格式化: 流程: ①:类型转换:首先调用Proper ...
- SpringMVC配置数据验证(JSR-303)
这篇文章已经过时了. 请参考比较合适的前后端交互方式. 1.pom.xml中追加hibernate-validator 2.在dto类的域上追加JSR-303的注解 public class Data ...
- Spring MVC 使用介绍(十三)数据验证 (一)基本介绍
一.消息处理功能 Spring提供MessageSource接口用于提供消息处理功能: public interface MessageSource { String getMessage(Strin ...
- 06springMVC数据验证
u 声明式数据验证 u 内置的验证约束和注解 u 错误消息 u 功能处理方法上多个验证参数的处理 u 异常处理的支持 1 声明式数据验证 Spring3开始支持JSR-303验证框 ...
- springMVC数据验证出现404错误解决办法
今天使用springMVC的数据验证的时候,看似很简单的东西,却有一个很大的陷阱:提交空表单的时候总是出现404错误,但是后台却不给你报任何错.遇到这个错误这个很苦恼,搞了几小时,今天记录并分享一下解 ...
- SpringMVC数据验证(AOP处理Errors和方法验证)
什么是JSR303? JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案. Hibernate Validator 是 Bean Valida ...
- SpringMVC学习笔记六:使用 hibernate-validator注解式数据校验
对客户端传过来的参数,在使用前一般需要进行校验. SpringMVC框架内置了Validator验证接口,但是实现起来太麻烦.我们一般使用 hibernate-validator进行数据校验. 1:j ...
- SpringMVC(6)数据验证
在系列SpringMVC(4)数据绑定-1.SpringMVC(5)数据绑定-2中我们展示了如何绑定数据,绑定完数据之后如何确保我们得到的数据的正确性?这就是我们本篇要说的内容 -> 数据验证. ...
随机推荐
- Guava---缓存之LRU算法
随笔 - 169 文章 - 0 评论 - 292 GuavaCache学习笔记一:自定义LRU算法的缓存实现 前言 今天在看GuavaCache缓存相关的源码,这里想到先自己手动实现一个LRU ...
- Java并发之多线程下竞态条件概念的理解
一.简述 竞态条件(Race Condition):计算的正确性取决于多个线程的交替执行时序时,就会发生竞态条件. 二.常见竞态条件分析 最常见的竞态条件为 1.先检测后执行 执行依赖于检测的结果,而 ...
- kudu 介绍
kudu的好处: 快速的olap 列式存储,Hadoop parquet 的一种替代方案 对数据的顺序处理和随机处理都很高效 * High availability. Tablet Servers a ...
- java ImmutableMap使用
原文地址:https://blog.csdn.net/wantsToBeASinger/article/details/84997362 java中的Immutable对象: 简单地说,如果一个对象实 ...
- 用eclipse开发需要准备什么?
1.到eclipse的官网上,https://www.eclipse.org/ 下载好eclipse,安装好eclipse,修改eclipse.ini文件,把内存改大点,避免出现内存溢出的情况. [ ...
- hanlp添加词典不起作用
不起作用的原因很多,这里列举几个 这里的hanlp我虽然用的maven建立的但是要添加自定义词典,所以没有用maven引入的方式,而是下载了data+hanlp.jar文件 data ...
- wraps补充
''' wraps: (了解) 是一个修复工具,修复的是被装饰对象的空间. from functools import wraps ''' from functools import wraps de ...
- 串口调试工具与com口编程
当我们要与称打印机进行交互的时候这就需要 驱动 只有得到对应产品的驱动我们才有机会对其进行 com 口编程 首先我们就需要一个小工具来进行测试 获取对应的com 口,观察数据传输方式 链接地址: 链 ...
- Azkaban 3.x 编译及部署
一.Azkaban 源码编译 1.1 下载并解压 Azkaban 在 3.0 版本之后就不提供对应的安装包,需要自己下载源码进行编译. 下载所需版本的源码,Azkaban 的源码托管在 GitHub ...
- Spring Boot 整合 MyBatis 实现乐观锁和悲观锁
本文以转账操作为例,实现并测试乐观锁和悲观锁. 完整代码:https://github.com/imcloudfloating/Lock_Demo GitHub Page:http://blog.cl ...