ValidationUtils 参数校验工具类

/**
 * @ClassName ValidationUtils
 * @Description 参数校验工具类
 * @Author 
 * @Date 
 * @Version 1.0
 */
public class ValidationUtils {
    /**
     * 使用hibernate的注解来进行验证
     */
    private static Validator validator = Validation
            .byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();

    /**
     * 校验指定对象参数的合法性
     * 
     * @param obj
     * @param <T>
     */
    public static <T> void validate(T obj) {
        Set<ConstraintViolation<T>> constraintViolations = validator.validate(obj);
        if (constraintViolations.size() > 0) {
            throw new ValidationParamException(ResponseCode.PARAM_ERROR.getCode(), String.format("%s", constraintViolations.iterator().next().getMessage()));
        }
    }

    /**
     * 处理参数校验错误信息
     *
     * @param bindingResult
     * @return
     */
    public static String operateBindingResult(BindingResult bindingResult) {
        List<String> errorInfoList = new ArrayList<>();
        List<FieldError> fieldErrorList = bindingResult.getFieldErrors();
        for (FieldError error : fieldErrorList) {
            errorInfoList.add(error.getDefaultMessage());
        }
        return JSONObject.toJSONString(errorInfoList);
    }
}
/**
 * @Description TODO
 * @Author 
 * @Date 
 * @Version 1.0
 */
@Getter
@ToString
public enum ResponseCode {

    //结果码
    SUCCESS("0000", "成功"),
    FAIL("4000", "失败"),
    MERCHANT_NOT_LOGIN("1001", "需要登录"),
    AUTH_BUYER("1002", ""),
    AUTH_SELLER("1003", ""),
    PARAM_ERROR("5001", "入参错误"),
    OPEN_SHOP("-10201",""),
    OPEN_APPLY("10201",""),
    SUBMIT_FAIL("10211",""),
    UNKNOWN_ERROR("9999", "服务器发生异常");

    // 返回码
    private String code;

    // 返回信息
    private String msg;

    ResponseCode(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }


}
//只需要在入参时加@Validated注解,在入参对象里加注解校验,然后全局捕获异常即可,具体按照项目区分
//@RequestBody @Validated ConfirmInfoRequest confirmInfoRequest, BindingResult result
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值