文档章节

spring使用Aop管理所有Valid结构bindingResult

凉粉
 凉粉
发布于 2015/10/29 18:31
字数 405
阅读 1382
收藏 1

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

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

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

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

//然后是错误消息提示

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

}

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

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

现在贴上AOP代码

1.首先springXML文件

<bean id="bindingResultAop" class="com.xiaokuaimei.core.aop.BindingResultAop"/>
    <aop:config>
        <aop:pointcut id="bindingResultAopPC" expression="execution(* com.xiaokuaimei.controller.hiring.*.*(..) )"/>
        <aop:aspect id="controllerAspect" ref="bindingResultAop">
            <aop:around method="around" pointcut-ref="bindingResultAopPC"/>
        </aop:aspect>
    </aop:config>

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<ObjectError> 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.最后

全部控制就可以了


© 著作权归作者所有

凉粉

凉粉

粉丝 18
博文 28
码字总数 6212
作品 3
成都
程序员
私信 提问
加载中

评论(3)

壮实与七龙珠
壮实与七龙珠
这个在控制器里方法里面还是要写 BindingResult result 这个参数吧
凉粉
凉粉 博主

引用来自“zonghua”的评论

bindingReuslt.getAllerror().size()>0

不是直接有个方法,hasError吗?
恩,主要还是以下面代码为主。这句话是我的失误
啦啦啦拉拉
啦啦啦拉拉
bindingReuslt.getAllerror().size()>0

不是直接有个方法,hasError吗?
SpringMVC优雅的实现数据校验

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lynnlovemin/article/details/78989040 我们在使用SpringMVC提供接口时,所提供的参数难免会进行参数的合法性...

lynnlovemin
2018/01/06
0
0
SpringBoot(三)之web开发

一、web基础配置 1、访问静态资源 1)进入规则为 / 时 如果进入SpringMVC的规则为/时,Spring Boot的默认静态资源的路径为: 也就是说,在默认的Spring MVC进入规则下,classpath下的META-IN...

郑加威
2018/12/23
92
0
SpringMVC+Shiro权限管理【转】

1.权限的简单描述 2.实例表结构及内容及POJO 3.Shiro-pom.xml 4.Shiro-web.xml 5.Shiro-MyShiro-权限认证,登录认证层 6.Shiro-applicationContext-shiro.xml 7.HomeController三个JSP文件 什...

如何让他和
2016/11/02
119
1
参数验证 @Validated 和 @Valid 的区别

来源:blog.csdn.net/qq_27680317/article/details/79970590 整编:Java技术栈(公众号ID:javastack) Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303 规范......

Java技术栈
01/21
154
0
Spring框架 之@Valid注解的使用(嵌套类型的效验)

@Valid注解可以实现数据的验证,你可以定义实体,在实体的属性上添加校验规则,而在API接收数据时添加@valid关键字,这时你的实体将会开启一个校验的功能。 @Valid 注解类型的使用: @Null 限...

沉淀人生
2018/05/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一篇文章教你轻松使用fastjson

前言 只有光头才能变强。 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y JSON相信大家对他也不陌生了,前后端交互中常常就以JSON来进行数据交换。而有的...

Java3y
31分钟前
4
1
分组功能(tapply,by,aggregate)和* apply系列

每当我想在R中做“ map” py任务时,我通常都会尝试在apply系列中使用一个函数。 但是,我从未完全理解它们之间的区别-{ sapply , lapply等}如何将函数应用于输入/分组输入,输出将是什么样...

javail
31分钟前
4
0
PHP环境搭建之单独安装

还在使用PHP集成环境吗?教你自定义搭建配置PHP开发环境,按照需求进行安装,安装的版本可以自己选择,灵活性更大。 目录: 1. 安装Apache 2. 安装PHP 3. 安装MySQL 4. 安装Composer 观看:h...

不冷的大叔
43分钟前
4
0
为什么JavaScript变量会以美元符号开头?

我经常看到JavaScript带有以美元符号开头的变量。 您何时/为什么选择以这种方式为变量添加前缀? (我不是在问您在jQuery和其他语言中看到的$('p.foo')语法,而是普通变量,例如$name和$orde...

技术盛宴
47分钟前
4
0
TCP 三次握手

https://my.oschina.net/u/4198159/blog/3141874

奋斗的小牛
56分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部