博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring使用Aop管理所有Valid结构bindingResult
阅读量:7222 次
发布时间:2019-06-29

本文共 1604 字,大约阅读时间需要 5 分钟。

hot3.png

在使用springMVC的时候有用到Valid注解,也就对应着有了多个BindingResult。

而有时候Validator规则是在bean里面定义的,这个时候bindingResult就是自动验证后的结果,并且结构都大同小异

if(bindingReuslt.getAllerror().size()>0){

//然后是错误消息提示

//然后返回等等一系列操作

}

有的时候我们是异步数据交互,返回错误数据格式一模一样。所以也就导致了每个验证里面有同样的代码出现造成了代码冗余。

为了解决这样的问题,想过用拦截器或者基类强制控制,不过效果都不是很好,后来又想到用AOP,发现效果挺好的。

现在贴上AOP代码

1.首先springXML文件

    
        
        
            
            

2.BindingResultAOP类

目前是统一返回json格式字符串

/** * 主要针对于controller 方法验证。 * 使用方法: 参数中添加@Vaild注解与BindingResult。然后自动验证。 * 如果验证失败:然后json字符串 {result:false,message:'java bean中验证message'} * User: zhoujingjie * Date: 14-10-31 * Time: 下午4:06 */public class BindingResultAop {    /**     * @param joinPoint     * @return     * @throws Throwable     */    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {        BindingResult bindingResult = null;        for(Object arg:joinPoint.getArgs()){            if(arg instanceof BindingResult){                bindingResult = (BindingResult) arg;            }        }        if(bindingResult != null){            List
 errors = bindingResult.getAllErrors();            if(errors.size()>0){                StringBuilder msg = new StringBuilder();                for(ObjectError error :errors){                    msg.append(error.getDefaultMessage());                    msg.append("\n");                }                return new JSONView(new _HashMap().add("result",false).add("message",msg.toString()));            }        }        return joinPoint.proceed();    }}

3.最后

全部控制就可以了

转载于:https://my.oschina.net/scjelly/blog/523708

你可能感兴趣的文章
春运守护者 大陆首批台湾籍乘务长黄佳莹
查看>>
潮汕明代皇封御葬古墓受损追踪:当地相关部门介入
查看>>
“老票证”述时代变迁:从凭“票”买到“任意”购
查看>>
做java该要了解的东西
查看>>
春节出行带个对讲机 旅行实测威诺VR-N65
查看>>
河北旅游发展蓝皮书:借力雄安打造京津冀世界旅游品牌
查看>>
江西一名男婴被弃医院9个月 其父自首其母接回孩子
查看>>
江西去年为企业、居民减税659亿元 发行1082亿元政府债券
查看>>
GitHub发布Python安全警告 识别依赖包的安全漏洞
查看>>
讲好文创的时代故事
查看>>
支持53种语言预训练模型,斯坦福发布全新NLP工具包StanfordNLP
查看>>
翟欣欣微博发声解释“真相”
查看>>
Mac 常用必备软件(GitHub)
查看>>
快速排序就这么简单
查看>>
老腊肉级干货 | OOD面试备战攻略
查看>>
Google 回归中国,你准备好成为 Googler 了吗?
查看>>
React Native 项目(One 【一个】客户端)
查看>>
万套源码分享系列一
查看>>
util.promisify 的那些事儿
查看>>
vue3.0 尝鲜 -- 摒弃 Object.defineProperty,基于 Proxy 的观察者机制探索
查看>>