在使用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.最后

全部控制就可以了

转载于:https://www.cnblogs.com/zhoujingjie/articles/4066597.html

使用Aop管理所有Valid结构bindingResult相关推荐

  1. springMVC,aop管理log4j,把当前session信息和错误信息打印到日志

    ((((其实还是不太理解aop的正真意义但是这样可以实现想要的了,我的感觉是执行一个方法时首先通过filter( 这个fiter可以不配置,之所以要他是因为在aop切入的方法session消失了,我们 ...

  2. Vue后台管理页面总体结构及主要功能设计

    后台管理页面总体结构为:顶部左侧为系统标题,顶部右侧为用户图标及改密.退出菜单.中间左侧为功能菜单,中间右侧为操作区域,可以用el-row配合el-col来实现布局.其中导航菜单可以用el-menu配 ...

  3. C++ 利用结构体数组编写一个程序,对10名小学生的信息进行管理,学生结构体的成员包括姓名、学号、年龄、语文成绩、数学成绩、英语成绩、三门课总分等

    利用结构体数组编写一个程序,对10名小学生的信息进行管理,学生结构体的成员包括姓名.学号.年龄.语文成绩.数学成绩.英语成绩.三门课总分等,具体要求如下: (1)要求通过键盘完成各位小学生的信息录入( ...

  4. 使用反射机制深入理解AOP机制并自定义AOP管理模块

    最近在总结过去一年所做的项目,由于开发周期或者对需求的把握不是太到位,每个项目随着所做的项目进度,从需求分析到code阶段总或多或少有一些自己感觉不是太完美或没有尽善尽美的地方,使用开源框架和第三方接 ...

  5. SpringBoot集成AOP管理日志

    写在前面 如何将所有的通过url的请求参数以及返回结果都输出到日志中? 如果在controller的类中每个方法名都写一个log输出肯定是不明智的选择.使用Spring的AOP功能即可完成. AOP ...

  6. 第五章:管理数据库存储结构

    存储结构<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 数据存 ...

  7. 17 操作系统第四章 磁盘管理 磁盘的结构 磁盘调度算法 减少磁盘延迟时间的方法

    文章目录 1 磁盘的结构 1.1 磁盘.磁道.扇区 1.2 磁盘如何读取数据 1.4 盘面.柱面.磁盘的物理地址 1.5 磁盘的分类 1.6 磁盘的结构小结 2 磁盘调度算法 2.1 一次磁盘读/写操 ...

  8. OCP之5 管理数据库存储结构

    存储结构 一个数据库可划分为多个称为表空间的逻辑存储单元.每个表空间可以包含很多Oracle 逻辑数据块.DB_BLOCK_SIZE 参数指定了逻辑块的大小.逻辑块的大小介于2 KB 到 32 KB ...

  9. java aop管理权限_基于spring aop 权限管理系统原型 - andyj2ee - BlogJava

    此权限管理系统把待访问的业务层方法做为权限管理中的资源,通过spring aop 对接口方法进行拦截,来实现权限的管理,可以实现细粒度的权限控制. 在上文体验了spring aop 一些特性,aop ...

最新文章

  1. 上海的超级计算机,亚洲第一超级计算机在上海投入运行
  2. SAP WM LT42创建TO,报错-No entry in Table 329S (NM1 B)-
  3. S8会成为三星移动的转折点吗?
  4. java linux res很高_Linux下Java进程RES是1.6G,但是jmap里用到的才五百多M,剩下的1.1G左右是去哪了?...
  5. requestmapping配置页面后_@RequestMapping接口及页面乱码问题
  6. 字符串转换为整数的源码atoi()
  7. Apache cxf JaxRs基本应用
  8. java二维数组存储数据,从键盘上录入学生人数,考试科目数,以及每个学生每科分数,输出每个学生的最高分、最低分、总分、平均分
  9. C++应用通信服务器:MYCP功能介绍
  10. 基于贪心算法的几类区间覆盖问题 nyoj 12喷水装置(二) nyoj 14会场安排问题...
  11. 剑指offer(C++)-JZ55:二叉树的深度(数据结构-树)
  12. 用c语言覆盖前一个字符的值,C/C++笔试题
  13. springboot整合rabbitmq之延时队列
  14. 计算机课教师评价,教师课堂评价语集锦
  15. python虚拟变量回归_Python中使用虚拟变量的OLS最佳解决方案?
  16. CTF隐写术:男神一般都很低调很低调的
  17. Dlink DIR-615L 和 Mercury MW300R WDS 应用举例
  18. Zookeeper一致性级别分析,含爱奇艺,小米,腾讯,阿里
  19. C语言中 %md 的输入输出使用(还有printf函数的 %0格式控制符的使用)
  20. 软考必考之有关计算机的知识产权基础

热门文章

  1. cnn训练出现的问题
  2. 2012浙大878计算机专业基础综合大题答案解析
  3. 解决开ServiceHost时候System.PlatformNotSupportedException: Operation is not supported on this platform.
  4. java n*n矩阵求值及求逆矩阵
  5. 杭电4561 连续最大积
  6. qt 两种按钮点击事件应用
  7. hibernate数据库连接池
  8. 学习编写测试桩之declspec (dllexport)篇
  9. php将文件转换为utf-8,PHP-将邮件正文转换为UTF-8
  10. postgres 禁止远程登录_解决postgresql无法远程访问的情况