Bean validation
公司测试非常严格,要求我们对每个参数的长度进行校验,提了一个参数长度校验的单,然后我们老大就把我们的代码全部打回去了。。。。
一个bean类中往往有超多变量,如果一个个写if else,够呛,而且圈复杂度也会上去。所以我打算使用bean validation。
网上找了很多博客,试了一下并没有效果,可能因为我们项目是基于SpringBoot的。
下面是我实现的方式。
步骤一. 新建一个bean 上面添加 @Size 注解,@Size注解 是Java bean validation中的一个注解,可以限制变量长度的最大值与最小值。
public class Student {
@Size(max = 10,message = "id size error")
private String id;
@Size(max = 10,message = "name size error")
private String name;
@Size(max = 50,message = "stuId size error")
private String stuId;
@Size(max = 50,message = "gender size error")
private String gender;
......
步骤二. 新建util,工具类,然后在其中验证参数的合法性,其中 ResultInfo 是结果类,用于封装异常信息
public class CommonUtils {
public static ResultInfo isValid(Object object){
ResultInfo resultInfo = new ResultInfo();
ValidatorFactory vf = Validation.buildDefaultValidatorFactory();
Validator validator = vf.getValidator();
Set<ConstraintViolation<Object>> validate = validator.validate(object);
if (validate == null || validate.size() == 0){
resultInfo.setStatus(0);
resultInfo.setMessage("");
}
else{
resultInfo.setStatus(1);
StringBuilder sbuilder = new StringBuilder();
for (ConstraintViolation<Object> cv : validate) {
sbuilder.append(cv.getMessage()); //添加异常信息
}
resultInfo.setMessage(sbuilder.toString());
}
return resultInfo;
}
}
步骤三:在controller层调用util类,进行参数校验
@ResponseBody
@RequestMapping(value = "/getStuByName", method = RequestMethod.POST)
public String getStuByName(@RequestBody Student student) {
System.out.println("enter getStuByName");
System.out.println(JSONObject.toJSONString(student));
ResultInfo validStr = CommonUtils.isValid(student);
if(!StringUtils.isEmpty(validStr)){
return JSONObject.toJSONString(validStr);
}
System.out.println("is valid");
List<Student> students = studentService.getStuByName(student.getName());
return JSONArray.toJSONString(students);
}
步骤四:测试啦,调用url,传入超过长度的参数,结果如下


Bean validation的更多相关文章
- Java数据校验(Bean Validation / JSR303)
文档: http://beanvalidation.org/1.1/spec/ API : http://docs.jboss.org/hibernate/beanvalidation/spec/1. ...
- Java Bean Validation 最佳实践
参数校验是我们程序开发中必不可少的过程.用户在前端页面上填写表单时,前端js程序会校验参数的合法性,当数据到了后端,为了防止恶意操作,保持程序的健壮性,后端同样需要对数据进行校验.后端参数校验最简单的 ...
- spring 3.1 配置 JCR 303 Bean Validation
A) 导入Hibernate-Validator 要使用JSR303 校验框架, 需要加入框架的具体实现Hibernate-Validator, 在soureforge上下载最新的Hibernate ...
- Java bean validation 规范与参考实现
1.Apache Bval 依赖包:validation-api-1.1.0.Final.jar org.apache.bval.bundle-1.1.1.jar bval-core-1.1.1.ja ...
- JSR 303 - Bean Validation 介绍及最佳实践
JSR 303 - Bean Validation 介绍及最佳实践 JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案.2009 年 12 月 ...
- 使用hibernate时出现 org.hibernate.HibernateException: Unable to get the default Bean Validation factory
hibernate 在使用junit测试报错: org.hibernate.HibernateException: Unable to get the default Bean Validation ...
- 基于springmvc的简单增删改查实现---中间使用到了bean validation
package com.kite.controller; import java.util.HashMap; import java.util.Map; import javax.validation ...
- Bean Validation 技术规范特性概述
概述 Bean Validation 规范 Bean 是 Java Bean 的缩写.在 Java 分层架构的实际应用中,从表示层到持久化层.每一层都须要对 Java Bean 进行业务符合性验证,如 ...
- JSR303 Bean Validation 技术规范特性概述
概述 Bean Validation 规范 Bean 是 Java Bean 的缩写,在 Java 分层架构的实际应用中,从表示层到持久化层,每一层都需要对 Java Bean 进行业务符合性验证,如 ...
- juit测试中报错:org.hibernate.HibernateException: Unable to get the default Bean Validation factory
org.hibernate.HibernateException: Unable to get the default Bean Validation factory 解决方法: 解决方案: 在hib ...
随机推荐
- jQuery遍历table中的tr td并获取td中的值
jQuery遍历table中的tr td并获取td中的值 $(function(){ $("#tableId tr").find("td").each(func ...
- Django学习-4-request获取数据
app下views.py 获取前端HTML数据的一些方法 def func(request): # request.me ...
- freemarker自定义标签(二十一)
一,讲解一 1.自定义标签说明 宏变量存储模板片段可以被用作自定义指令macro 2.示例说明 <html> <head> <meta http-equiv=" ...
- tomcat原理(二)
一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:
- WebForm 生成并显示二维码
Generate and display QRCode in WebForm. 项目引用 QRCoder生成并显示 QRCode 项目引用 QRCoder How to use QRCoder Via ...
- APIO2010特别行动队
斜率优化 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <s ...
- [BZOJ2048] [2009国家集训队] 书堆
Description Input 第一行正整数 N M Output 一行(有换行符),L,表示水平延伸最远的整数距离 (不大于答案的最大整数) Sample Input #11 100 #22 1 ...
- To Fill or Not to Fill (贪心)
转自:https://www.cnblogs.com/XBWer/p/3866486.html With highways available, driving a car from Hangzhou ...
- NancyFX 第十章 身份验证
如果你在采用某个Web框架来构建一个公共使用的Web服务,你可能需要对谁能访问上述的服务进行某种方式的控制. 它可能很简单,只需要在调用API时在HTTP头信息中加入一个验证字段,或者需要构建一个完善 ...
- dva.js 用法总结
dva.js是阿里前端团队开发的一个基于react.redux.webpack的一个前端框架,他能够实现react-redux-webpack环境一键部署,能帮前端工程师节省不少环境搭建的时间.而且经 ...