使用Aop管理所有Valid结构bindingResult
在使用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相关推荐
- springMVC,aop管理log4j,把当前session信息和错误信息打印到日志
((((其实还是不太理解aop的正真意义但是这样可以实现想要的了,我的感觉是执行一个方法时首先通过filter( 这个fiter可以不配置,之所以要他是因为在aop切入的方法session消失了,我们 ...
- Vue后台管理页面总体结构及主要功能设计
后台管理页面总体结构为:顶部左侧为系统标题,顶部右侧为用户图标及改密.退出菜单.中间左侧为功能菜单,中间右侧为操作区域,可以用el-row配合el-col来实现布局.其中导航菜单可以用el-menu配 ...
- C++ 利用结构体数组编写一个程序,对10名小学生的信息进行管理,学生结构体的成员包括姓名、学号、年龄、语文成绩、数学成绩、英语成绩、三门课总分等
利用结构体数组编写一个程序,对10名小学生的信息进行管理,学生结构体的成员包括姓名.学号.年龄.语文成绩.数学成绩.英语成绩.三门课总分等,具体要求如下: (1)要求通过键盘完成各位小学生的信息录入( ...
- 使用反射机制深入理解AOP机制并自定义AOP管理模块
最近在总结过去一年所做的项目,由于开发周期或者对需求的把握不是太到位,每个项目随着所做的项目进度,从需求分析到code阶段总或多或少有一些自己感觉不是太完美或没有尽善尽美的地方,使用开源框架和第三方接 ...
- SpringBoot集成AOP管理日志
写在前面 如何将所有的通过url的请求参数以及返回结果都输出到日志中? 如果在controller的类中每个方法名都写一个log输出肯定是不明智的选择.使用Spring的AOP功能即可完成. AOP ...
- 第五章:管理数据库存储结构
存储结构<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 数据存 ...
- 17 操作系统第四章 磁盘管理 磁盘的结构 磁盘调度算法 减少磁盘延迟时间的方法
文章目录 1 磁盘的结构 1.1 磁盘.磁道.扇区 1.2 磁盘如何读取数据 1.4 盘面.柱面.磁盘的物理地址 1.5 磁盘的分类 1.6 磁盘的结构小结 2 磁盘调度算法 2.1 一次磁盘读/写操 ...
- OCP之5 管理数据库存储结构
存储结构 一个数据库可划分为多个称为表空间的逻辑存储单元.每个表空间可以包含很多Oracle 逻辑数据块.DB_BLOCK_SIZE 参数指定了逻辑块的大小.逻辑块的大小介于2 KB 到 32 KB ...
- java aop管理权限_基于spring aop 权限管理系统原型 - andyj2ee - BlogJava
此权限管理系统把待访问的业务层方法做为权限管理中的资源,通过spring aop 对接口方法进行拦截,来实现权限的管理,可以实现细粒度的权限控制. 在上文体验了spring aop 一些特性,aop ...
最新文章
- 上海的超级计算机,亚洲第一超级计算机在上海投入运行
- SAP WM LT42创建TO,报错-No entry in Table 329S (NM1 B)-
- S8会成为三星移动的转折点吗?
- java linux res很高_Linux下Java进程RES是1.6G,但是jmap里用到的才五百多M,剩下的1.1G左右是去哪了?...
- requestmapping配置页面后_@RequestMapping接口及页面乱码问题
- 字符串转换为整数的源码atoi()
- Apache cxf JaxRs基本应用
- java二维数组存储数据,从键盘上录入学生人数,考试科目数,以及每个学生每科分数,输出每个学生的最高分、最低分、总分、平均分
- C++应用通信服务器:MYCP功能介绍
- 基于贪心算法的几类区间覆盖问题 nyoj 12喷水装置(二) nyoj 14会场安排问题...
- 剑指offer(C++)-JZ55:二叉树的深度(数据结构-树)
- 用c语言覆盖前一个字符的值,C/C++笔试题
- springboot整合rabbitmq之延时队列
- 计算机课教师评价,教师课堂评价语集锦
- python虚拟变量回归_Python中使用虚拟变量的OLS最佳解决方案?
- CTF隐写术:男神一般都很低调很低调的
- Dlink DIR-615L 和 Mercury MW300R WDS 应用举例
- Zookeeper一致性级别分析,含爱奇艺,小米,腾讯,阿里
- C语言中 %md 的输入输出使用(还有printf函数的 %0格式控制符的使用)
- 软考必考之有关计算机的知识产权基础
热门文章
- cnn训练出现的问题
- 2012浙大878计算机专业基础综合大题答案解析
- 解决开ServiceHost时候System.PlatformNotSupportedException: Operation is not supported on this platform.
- java n*n矩阵求值及求逆矩阵
- 杭电4561 连续最大积
- qt 两种按钮点击事件应用
- hibernate数据库连接池
- 学习编写测试桩之declspec (dllexport)篇
- php将文件转换为utf-8,PHP-将邮件正文转换为UTF-8
- postgres 禁止远程登录_解决postgresql无法远程访问的情况