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的更多相关文章

  1. java-TokenProcessor令牌校验工具类

    TokenProcessor令牌校验工具类 public class TokenProcessor { private long privious;// 上次生成表单标识号得时间值 private s ...

  2. java常用正则校验工具类

    正则常用校验工具类 import java.util.regex.Pattern; /** * @program: * @description: 校验工具类 * @author: xujingyan ...

  3. JavaScript 数据值校验工具类

    /** * 数据值校验工具类 */ var checkService = { // 不校验 none: function () { return true; }, //非空校验 isEmpty: fu ...

  4. 兼容 Spring Boot 1.x 和 2.x 配置类参数绑定的工具类 SpringBootBindUtil

    为了让我提供的通用 Mapper 的 boot-starter 同时兼容 Spring Boot 1.x 和 2.x,增加了这么一个工具类. 在 Spring Boot 中,能够直接注入 XXProp ...

  5. spring boot 输入参数统一校验

    1 引入spring boot validate    maven 依赖 <!-- 验证 --> <dependency> <groupId>org.hiberna ...

  6. Java可变参数与Collections工具类使用了解

    今天发现jdk1.5后增加了个可变参数,以前还一直不晓得 public static void main(String[] args) { System.out.println(getNum(1,2, ...

  7. Java自学第6期——Collection、Map、迭代器、泛型、可变参数、集合工具类、集合数据结构、Debug

    集合:集合是java中提供的一种容器,可以用来存储多个数据. 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型值. ...

  8. https请求之绕过证书安全校验工具类(原)

    package com.isoftstone.core.util; import java.io.BufferedReader; import java.io.ByteArrayOutputStrea ...

  9. 【uniapp 开发】校验工具类 CheckUtil

    校验手机号格式 /** * 验证是否为电话号码(座机) * * @param {} * source */ function isTelephone(source) { var regex = /^( ...

随机推荐

  1. 设置使用的python版本

    一.查看当前使用的python版本,或设置使用的python版本 二.python2中默认使用ASCII码,无法识别中文,报错如图,解决办法,设置字符集为utf-8

  2. Linux 常用命令大全(长期更新)

    常见指令 打包压缩相关命令 关机/重启机器 Linux管道 vim使用 用户及用户组管理 文件权限管理 更改文件的用户及用户组 更改权限 常用指令 ls 显示文件或目录 -l 列出文件详细信息l(li ...

  3. PC站与H5移动站最佳适配方案

    HTML5是目前HTML的最屌版本,同时也是建设移动站的最佳技术.百度适时推出PC站与H5移动站的最佳适配方案,对站长而言实在是久旱逢甘霖.详情如下: PC站与H5移动站最佳适配方案 pc端: 在pc ...

  4. python学习之路---day20--面向对象--多继承和super() 函数

    一:python多继承 python多继承中,当一个类继承了多个父类时候,这个类拥有多个父类的所欲非私有的属性 l例子: class A: pass class B(A): pass class C( ...

  5. C++_标准模板库STL概念介绍1-建立感性认知

    标准模板库的英文缩写是STL,即Standard Template Library. STL里面有什么呢? 它提供了一组表示容器.迭代器.函数对象和算法的模板. 容器是一个与数组类似的单元,可以存储若 ...

  6. 基于 bootstrap html 响应式 布局

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...

  7. HDU - 1525 博弈 暴力分析

    先来看看比较显然的几个局面 (a,0) 先手必败 (a,a) 先手必胜 (a,ak) 先手必胜 (a,ak+r),k>1 先手必胜,因为先手有主动权把(a,r)让给后手或留给自己 对于开局(a, ...

  8. BZOJ - 2457 思維+貪心

    //為什麼我的Chrome OS更新後變成強制繁體了?? 題目要求使用最少的雙端隊列來維護一個單調非降序列 先來看下規律 首先,val肯定是單調非降的,在相等val範圍內的id可以xjb亂放不影響 其 ...

  9. 认识CSS中css背景样式设置

    前端之HTML,CSS(五) CSS CSS背景 CSS可以添加背景颜色和背景图片,也可以对图片进行设置.设置的样式有: background-color 背景颜色 background-image ...

  10. intelliJ idea像eclipse一样在class中断点调试

    安装插件 Bytecode Viewwe Java Bytecode Decompiler