前端参数统一校验工具类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();
    }

原文地址:https://www.cnblogs.com/webwangbao/p/9254245.html

时间: 2024-10-04 14:21:38

前端参数统一校验工具类ValidParamUtils的相关文章

轻松把玩HttpClient之封装HttpClient工具类(六),封装输入参数,简化工具类

在写这个工具类的时候发现传入的参数太多,以至于方法泛滥,只一个send方法就有30多个,所以对工具类进行了优化,把输入参数封装在一个对象里,这样以后再扩展输入参数,直接修改这个类就ok了. 不多说了,先上代码: /** * 请求配置类 * * @author arron * @date 2016年2月2日 下午3:14:32 * @version 1.0 */ public class HttpConfig { private HttpConfig(){}; /** * 获取实例 * @retu

java校验工具类

import java.util.regex.Matcher;   import java.util.regex.Pattern;     /**  * 验证工具类  * @author admin  *  */ public class Validation {       //------------------常量定义       /**       * Email正则表达式="^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0

数据校验工具类

思路, 1.传入要校验的属性以及如果校验不过提示信息 2.如果数据校验不过返回json 格式信息. 3.不满足条件抛出自定义异常,然后在异常处理器中获取信息,return 信息 一.自定义异常 public class LyonException extends RuntimeException{ private static final long serialVersionUID = 1L; private String msg; private int code = 500; code 默认

缓存统一管理工具类--android

import android.content.Context; import android.os.Environment; import android.support.annotation.Nullable; import com.lidroid.xutils.db.annotation.NotNull; import junit.framework.Assert; import .R; import .utils.*; import java.io.File; import java.ut

java 16 - 13 可变参数和Arrays工具类的asList()方法

可变参数:定义方法的时候不知道该定义多少个参数 格式: 修饰符 返回值类型 方法名(数据类型… 变量名){ } 注意: 这里的变量其实是一个数组 如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个 1 import java.util.Scanner; 2 public class ArgsDemo { 3 4 public static void main(String[] args) { 5 int result = sum(1,2,3,4,5,6,7,8,9);//参与计

Hibernate-validate工具类,手动调用校验返回结果

引言:在常见的工程中,一般是在Controller中校验入参,校验入参的方式有多种,这里介绍的使用hibernate-validate来验证,其中分为手动和自动校验,自动校验可以联合spring,使用@Valid注解,以及 BindingResult类来自动收集消息,这里介绍的如何自动的,随时随地的调用工具类,校验指定类或注定属性是否符合规则,将错误封装. 1. 添加 hibernate-validate依赖 <!--hibernate validate--> <dependency&g

Spark项目之电商用户行为分析大数据平台之(十)IDEA项目搭建及工具类介绍

一.创建Maven项目 创建项目,名称为LogAnalysis 二.常用工具类 2.1 配置管理组建 ConfigurationManager.java 1 import java.io.InputStream; 2 import java.util.Properties; 3 4 /** 5 * 配置管理组件 6 * 7 * 1.配置管理组件可以复杂,也可以很简单,对于简单的配置管理组件来说,只要开发一个类,可以在第一次访问它的 8 * 时候,就从对应的properties文件中,读取配置项,

[Android Pro] 常用的android工具类和库

reference to  : http://blog.csdn.net/lovexieyuan520/article/details/50614086 这篇博客主要记录我认为比较有用的Android开源框架或者工具,我会持续添加,推荐给大家 1.这里面包含了很多的工具类,包括数据校验工具类,文件操作工具类,汉字转拼音工具类等. https://github.com/jingle1267/android-utils 2.CWAC,这里面包含不少android开发中具有普遍用途的库 https:/

JDBC实现用于操作数据库Mysql的工具类JDBCTools

下面用一个统一的工具类封装一套用于数据库的JDBC操作:包括 1)获取数据库链接资源  2)释放数据库链接资源,包括Connection,Statement,PreparedStatement,ResultSet等 3)数据库的更新操作,包括插入,删除,修改  4)数据库的查询操作 首先是1)获取数据库链接资源 /** * 获取数据库链接的静态方法 这样子就保证了只加载一次文件的操作 * @return * @throws Exception */ public static Connectio