前端参数统一校验工具类ValidParamUtils
1,前端参数不可信,对于后端开发人员来说应该是一条铁律,所以对于前端参数的校验,必不可少,而统一的前端参数校验工具,对我们进行参数校验起到事半功倍的效果
2,统一参数校验工具ValidParamUtils
public class ValidParamUtils {
public static void validInputParams(BindingResult bindingResult) throws ParameterValidErrorException {
if(bindingResult.hasErrors()) {
//如果对于字段的校验出现错误,抛出统一自定义参数异常
String errorMessage = ValidParamUtils.errorParamInfo(bindingResult);
if (!StringUtils.isBlank(errorMessage)){
throw new ParameterValidErrorException(ErrorCode.BAD_REQUEST, errorMessage);
}
throw new ParameterValidErrorException(ErrorCode.BAD_REQUEST);
}
}
public static String errorParamInfo(BindingResult bindingResult) {
//从绑定结果中,获取错误信息
FieldError fe = bindingResult.getFieldError();
if(fe != null) {
return fe.getDefaultMessage();
}
ObjectError oe = bindingResult.getGlobalError();
if(oe != null) {
return oe.getDefaultMessage();
}
return "";
}
3,自定义参数异常
public abstract class ParamErrorException extends RuntimeException {
/**
*
*/
private static final long serialVersionUID = 1L;
private ErrorCode errorCode;
public BaseException() {
}
public BaseException(ErrorCode errorCode) {
super(errorCode.getName());
this.errorCode = errorCode;
}
public BaseException(ErrorCode errorCode, String msg) {
super(msg);
this.errorCode = errorCode;
}
public ErrorCode getErrorCode() {
return errorCode;
}
public void setErrorCode(ErrorCode errorCode) {
this.errorCode = errorCode;
}
}
4,使用自定义的统一参数校验工具
@PostMapping(value = "/manage/ads/theme/add")
public Result addThemeActivity(@RequestBody @Validated(value = {AddOrUpdateThemeActivityRequest.AddThemeActivityGroup.class}) AddOrUpdateThemeActivityRequest addOrUpdateThemeActivityRequest, BindingResult bindingResult) {
LOGGER.info("manage addThemeActivity param:{}", JSON.toJSONString(addOrUpdateThemeActivityRequest));
//参数校验
ValidParamUtils.validInputParams(bindingResult);
Integer themeActivityNum = themeActivityService.selectThemeActivityByTitleAndId(addOrUpdateThemeActivityRequest.getTitle(), null);
if (themeActivityNum > 0) {
LOGGER.warn(String.format("%s. title:%s", ErrorCode.MANAGE_PROJECT_THEME_TITLE_EXIST.getName(), addOrUpdateThemeActivityRequest.getTitle()));
return Result.builder().failed(ErrorCode.MANAGE_PROJECT_THEME_TITLE_EXIST).build();
}
managerBannerService.insertThemeActivityInfo(addOrUpdateThemeActivityRequest);
sendBizLog(addOrUpdateThemeActivityRequest.getTitle());
LOGGER.info("manage addThemeActivity success. ");
return Result.builder().data("新增专题活动成功").success().build();
}
前端参数统一校验工具类ValidParamUtils的更多相关文章
- java-TokenProcessor令牌校验工具类
TokenProcessor令牌校验工具类 public class TokenProcessor { private long privious;// 上次生成表单标识号得时间值 private s ...
- java常用正则校验工具类
正则常用校验工具类 import java.util.regex.Pattern; /** * @program: * @description: 校验工具类 * @author: xujingyan ...
- JavaScript 数据值校验工具类
/** * 数据值校验工具类 */ var checkService = { // 不校验 none: function () { return true; }, //非空校验 isEmpty: fu ...
- 兼容 Spring Boot 1.x 和 2.x 配置类参数绑定的工具类 SpringBootBindUtil
为了让我提供的通用 Mapper 的 boot-starter 同时兼容 Spring Boot 1.x 和 2.x,增加了这么一个工具类. 在 Spring Boot 中,能够直接注入 XXProp ...
- spring boot 输入参数统一校验
1 引入spring boot validate maven 依赖 <!-- 验证 --> <dependency> <groupId>org.hiberna ...
- Java可变参数与Collections工具类使用了解
今天发现jdk1.5后增加了个可变参数,以前还一直不晓得 public static void main(String[] args) { System.out.println(getNum(1,2, ...
- Java自学第6期——Collection、Map、迭代器、泛型、可变参数、集合工具类、集合数据结构、Debug
集合:集合是java中提供的一种容器,可以用来存储多个数据. 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型值. ...
- https请求之绕过证书安全校验工具类(原)
package com.isoftstone.core.util; import java.io.BufferedReader; import java.io.ByteArrayOutputStrea ...
- 【uniapp 开发】校验工具类 CheckUtil
校验手机号格式 /** * 验证是否为电话号码(座机) * * @param {} * source */ function isTelephone(source) { var regex = /^( ...
随机推荐
- python-列表增删改查、排序、两个list合并、多维数组等
一.list列表 数组 列表类型:list 下标从0开始,0,1,2... 二.列表增加元素 stus.append() 在列表末尾增加一个元素: stus.insert(,) 在指定位置添加一个元 ...
- 【问题记录】element is not attached to the page document
遇到ui脚本报错:element is not attached to the page document 解决办法,再次定位即可
- Hibernate学习笔记(五)—— Hibernate查询方式
一.对象图导航查询 对象图导航查询方式是根据已经加载的对象,导航到他的关联对象.它利用类与类之间的关系来查询对象.比如要查找一个联系人对应的客户,就可以由联系人对象自动导航找到联系人所属的客户对象.当 ...
- P4219 [BJOI2014]大融合
传送门 动态维护森林 显然考虑 $LCT$ 但是发现询问求的是子树大小,比较不好搞 维护 $sum[x]$ 表示节点 $x$ 的子树大小,$si[x]$ 表示 $x$ 的子树中虚儿子的子树大小和 那么 ...
- 求一个区间里的一个x,这个x与这区间里面的所有数都互质
链接:https://ac.nowcoder.com/acm/contest/301/H来源:牛客网 题描述 小乐乐上了一节数学课,数学老师讲的很好,小乐乐听的也如痴如醉. 小乐乐听了老师的讲解,知道 ...
- 用 Koa 提供 Restful service 和查询 MongoDB 的例子
const path = require('path'); const Koa = require('koa'); const app = new Koa(); const compose = req ...
- Phyton自定义包导入。
说明:同一个项目下的自定义包. 项目层次: 1:先建好项目Pybasestudty 2:建Python package,包名:pytestpk,__init__.py是建包时自动产生的文件. 3:在该 ...
- 2019.3.25 SQL语句(进阶篇1)
运算符 基本的加减乘除取余都可以在SQL中使用 新建Employee1表并添加数据 create table Employee1 (eid int primary key auto_increment ...
- 搭建Flask+Vue及配置Vue 基础路由
最近一直在看关于Python的东西,准备多学习点东西.以前的项目是用Vue+Java写的,所以试着在升级下系统的前提下.能不能使用Python+Vue做一遍. 选择Flask的原因是不想随大流,并且比 ...
- 微信小程序实现图片上传功能
前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何实现上传图片到自己的服务器上 前端代码 data: { productInfo: {} }, //添加Banner bin ...