前端参数统一校验工具类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 = /^( ...
随机推荐
- oracle取order by的第一条数据
SELECT * FROM (SELECT * FROM TABLE_NAME ORDER BY COL1) WHERE ROWNUM = 1; 备注: 1.不能给 (SELECT * FROM TA ...
- [Swift]八大排序算法(六):希尔排序
排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...
- Linux 调节分辨率
首先,你要有 GUI 才能设置分辨率 Tool of xrandr xrandr -s 1360x768
- O(n^2) 级别的排序算法
o(n^2) 的排序算法.性能那么差,为什么还要学习? 首先,它是基础,千里之行,始于足下.它编码简单,容易实现,是一些简单情景的首选,它能给我们的问题一个暴力的解法,这样的解法也许不是最优的,但是它 ...
- [HAOI2007]理想的正方形 BZOJ1047 二维RMQ
题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: 第一行为3个整数,分别表示a,b,n的值 第二行至 ...
- bootstrap的使用2
表单控件: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- Exalogic 物理连线
以上图表为Exalogic 1/8配中的思科交换机连线,而1/4配.半配.满配的内置思科交换机连线基本上与以上图表一致.下面对该图表进行简要说明: (1).每台计算节点,只需要从net0上连接一根线到 ...
- Bootstrap点击弹出注册登录
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Java 简单的RPC 实现
借用了网上某大神的例子.... 目录结构是这样的... RpcFramework 主要是两个方法.一个是暴露服务,一个为引用服务.暴露服务的主要作用是声明一个接口的实现类.可以通过socket 远程调 ...
- POJ_2478 Farey Sequence 【欧拉函数+简单递推】
一.题目 The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbe ...