一个代替notNull参数校验工具

本文介绍了一个自定义的表单参数校验工具类,用于替代统一的@NotNull注解进行递归校验。该工具类适用于多个Controller使用同一Bean接收参数的场景,能够更灵活地处理POST和PUT请求中的ID校验问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己写的参数校验工具类,使用场景于多个controller下用了同一个bean去接收,这时候使用@notNull不是很现实,POST下ID理论是为undefined,而PUT则不是。
可根据需要在这工具类上修改

    /**
     * 表单参数校验 代替统一校验@NotNull 递归校验
     * 事务回滚在外部方法处理
     * 这里抛出ParamException丢给全局处理,代替返回结果
     * @author q_y_h
     * @param data
     * @param params 需要校验的参数
     * @return
     */
    public static <T> void allParamValid(T data, String... params) {
        for (int i = 0; i < params.length; i++) {
            String param = params[i];
            if (!paramValid(data.getClass(), data, param))
                throw new ParamException("参数缺失");
        }
    }


    public static<T> boolean paramValid(Class<?> thisClass,T data, String property) {
        boolean hasParam = false;
        Class<?> superclass = thisClass.getSuperclass();
        Field field = null;
        try {
            field = thisClass.getDeclaredField(property);
            field.setAccessible(true);
            Object param = field.get(data);
            hasParam = (param != null);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            if (superclass != null)
                return paramValid(superclass, data, property);
            else throw new ParamException("未找到校验参数:"+property+"\r\n");
        }finally {
            if (field != null)
                field.setAccessible(false);
        }
        //第一级时返回
        return hasParam;
    }
    
    public static void main(String[] args) {
        allParamValid(new SysUser(),"id","xxx","xxx");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值