Spring aop: 如何在增强方法中获取并修改目标函数的参数
来源:互联网 发布:java链式编程 编辑:程序博客网 时间:2024/05/22 05:27
@RequestMapping(value="/dispatch",produces = "text/html; charset=UTF-8") @ResponseBody @ControllerPointcut(str = "OKOK") public String dispatch(@RequestParam("messageA") String messageA, @RequestParam("messageB") String messageB, @RequestParam("messageC") String messageC)throws Exception{ return "<script>alert('"+messageA+messageB+messageC+"');</script>"; }
增强方法:
@Pointcut("@annotation(com.annotation.ControllerPointcut)") private void controller(){}@Around("controller()") public Object test(ProceedingJoinPoint pjp) throws Throwable{ Object[] args = pjp.getArgs(); for(Object obj : args){ System.out.println("arguments: "+obj); } Object args0 = args[0]; Object args2 = args[2]; args[0] = args2; args[2] = args0; Object retVal = pjp.proceed(args); return retVal; }
页面ajax:
$.ajax({ url:"test/dispatch.do", type:"post", dataType:"html", data:{messageA:"This", messageB:"Is", messageC:"Message"}, success:function(result){ $("#container-top").append(result); } });
结果:
页面:
MessageIsThis
Eclipse控制台:
arguments: Thisarguments: Isarguments: Message
总结:
1.ProceedingJoinPoint对象取到的args[]内的 参数顺序 就是 目标函数声明时的参数顺序,可以逐一对应
2.直接通过 args[‘index’] = ... 方式来修改,再通过 Object retVal = pjp.proceed(args); return retVal; 即可改变并传入参数;
3.如果对象方法的参数中包括 HttpServletRequest request, 那么直接调用其getParameterMap().put(...)方法改变Parameter会报错“parameterMap is locked”,而其set相关的方法又只有setAttribute,即设置用于多个controller方法跳转的attribute,就算设置成某parameter相同的名字,也无法覆盖,毕竟是不一样的对象。所以,通过截获request本身来改变参数的方法行不通。
4.另外还有在声明@annotation时,加入args(..) 这样的方法可以直接截获目标函数的参数,但,暂时不知道,如何只通过这个方法修改参数并传回目标函数。。。。
阅读全文
0 0
- Spring aop: 如何在增强方法中获取并修改目标函数的参数
- Spring中的AOP——在Advice方法中获取目标方法的参数
- Spring中的AOP—在Advice方法中获取目标方法的参数
- Spring中的AOP 在Advice方法中获取目标方法的参数(顶)
- Spring中的AOP(四)——在Advice方法中获取目标方法的参数
- Spring中的AOP——在Advice方法中获取目标方法的参数
- Spring AOP——在通知(Advice)方法中获取目标方法的参数
- Spring中的AOP——在Advice方法中获取目标方法的参数
- Spring中的AOP(五)——在Advice方法中获取目标方法的参数
- Spring中的AOP(四)——在Advice方法中获取目标方法的参数
- Spring中的AOP(五)——在Advice方法中获取目标方法的参数ProceedingJoinPoint
- Spring中的AOP在Advice方法中获取目标方法的参
- Spring AOP:访问目标方法的参数
- Spring Aop 修改目标方法参数和返回值
- Spring AOP中使用args表达式访问目标方法的参数
- Spring AOP(六)之访问目标方法的参数
- spring aop获取目标对象的方法对象
- spring aop获取目标对象的方法对象(续)
- git、svn 忽略问价设置
- Inno setup打包教程
- 解决戴尔INSPIRE关机后电源键继续亮着,风扇继续转动的有效方法。
- Pixhawk Commander流程图
- BZOJ1455 罗马游戏
- Spring aop: 如何在增强方法中获取并修改目标函数的参数
- 在linux上配置nfs服务器
- keil编译的程序 “汉字显示不全、串口发送汉字接收后乱码缺失”问题
- Windows下MySQL5.7配置安装重置密码及排坑指南
- Java爬虫小程序
- 在kinetic 中安装rbx1和模拟器
- JAVA中的设计模式
- 软件调试笔记62
- CAS之3.5版本,单点登录服务搭建(linux)-yellowcong