`

spring aop对Struts2的action拦截时出现异常

    博客分类:
  • java
阅读更多

     方法一:引用http://sulong.me/archives/51:不要让Action继承ActionSupport。

     用spring做为struts2的ObjectFactory,用spring来生成action,并对action的方法加上aop时,不要使Action继承于ActionSupport,否则会出现类似于以下的异常:

 java.lang.NoSuchMethodException: $Proxy84.executeList()
at java.lang.Class.getMethod(Class.java:1581)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.getActionMethod(AnnotationValidationInterceptor.java:55)
 
     方法二:引用http://xuxingyin.iteye.com/blog/600091:

struts.xml文件:
   <action name="login" class="memberAction" method="login">
    <result name="loginSuc">${nextPage}</result>
    <result name="loginFail">login.jsp</result>
   </action>
spring的applicationcontext.xml配置文件:
//action
<bean id="memberAction"
   class="com.edgar.s2shlogin.web.action.MemberAction" scope="prototype">
   <property name="memberService">
    <ref bean="memberService" />
   </property>
</bean>
<!-- 自动代理对象 -->
<bean id="autoProxy"
   class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
   <property name="proxyTargetClass" value="true"/> //注意这里!
   <property name="beanNames">
    <list>
     <value>*Action</value>
    </list>
   </property>
   <property name="interceptorNames">
    <list>
     <value>checkArgumentsAdvice</value>
     <value>exceptionLogger</value>
    </list>
   </property>
</bean>
 

 

当struts2的action没有配置动态方法调用的时候,运行正常。当使用动态方法调用的时候,运行时报

类似: NoSuchMethodException:$Proxy6.login() 的错误,解决办法是使用CGLib实现aop,加上

<property name="proxyTargetClass" value="true"/>

如果使用 aop:方式的话,加上<aop:aspectj-autoproxy proxy-target-class="true"/>

 

分享到:
评论

相关推荐

    Struts2的特点

    2、action是一个pojo,所以struts2.0与框架的藕合度非常低。 实现Action时有时会继承于ActionSupport, 覆盖execute方法,从而创建一个Action。 因为ActionSupport提供了很多方法可以为开发提供方便。 3、...

    Spring开发指南

    Struts in Spring 数据持久层 事务管理 持久层封装 JDBC Hibernate in Spring ibatis in Spring Aspect Oriented Programming AOP 概念 AOP in Spring Dynamic Proxy 与Spring AOP CGLib 与 Spring ...

    Spring in Action(第2版)中文版

    16.2协同使用spring和webwork2/struts2 16.3集成spring和tapestry 16.3.1集成spring和tapestry3 16.3.2集成spring和tapestry4 16.4协同使用spring和jsf 16.4.1解析jsf管理的属性 16.4.2解析springbean 16.4.3...

    Spring in Action(第二版 中文高清版).part2

    16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...

    spring in action英文版

     10.1.2 实现知晓Spring的Struts action  10.1.3 委托action  10.2 使用Tapestry  10.2.1 替换Tapestry引擎  10.2.2 装载Spring Bean至Tapestry页面中  10.3 集成JavaServer Faces  10.3.1 解析...

    SSH知识大全

    TP02-Web层框架struts.ppt TP03-Struts2常用标签.ppt TP04-Struts2的Action.ppt TP05-国际化和表单验证.ppt TP06-拦截器.ppt TP07-Hibernate入门.ppt TP08-Hibernate的对象和关系映射.ppt TP09-Hibernate查询.ppt ...

    Spring in Action(第二版 中文高清版).part1

    16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...

    使用JIVE的代理模式来扩展struts+Spring+Hibernate的web框架

    2.使用AOP或拦截器. 3.使用代理设计模式. 第一种方法,太笨. 第二种方法,在struts中不易实现,因为Strust的Action被Struts容器接管理,Action初始化,实例化都是由系统自动进行的.如果真的是由AOP实现,也许是一大推...

    Spring面试题

    在对由三部分组成的 Spring 系列 的第 1 部分进行总结时,我使用了一个示例,演示了如何通过 Spring IOC 容器注入应用程序的依赖关系(而不是将它们构建进来)。 我用开启在线信用帐户的用例作为起点。对于该实现,...

    一个简单的struts,spring,hibernate列子

    这个教程只整合了struts,spring,hibernate这三个东西怎么结合起来使用,还加入了aop拦截action的功能,lib包我没有放进去,各位自己去找把,实在是太大了。希望对各位有所帮助。

    Spring + Hibernate + Struts 事务配置小例子(带提示框等小技巧)

    前几天搞 Spring + Hibernate + Struts 事务配置 ,网上找了好多资料,不过好无语,大多都是 Ctrl + V,浪费俺的宝贵时间 现在我总结配出一套,给大家参考参考,可能有不足,请大家多多交流。 附:内有弹出...

    低清版 大型门户网站是这样炼成的.pdf

    2.1.9 struts 2的异常处理 52 2.2 struts 2配置精要 54 2.2.1 web.xml中struts 2的配置实现 54 2.2.2 struts 2属性配置文件struts.properties详解 55 2.2.3 struts 2核心配置文件struts.xml详解 57 2.3 struts ...

    Java Web程序设计教程

    7.2.2struts2对velocity的支持 153 7.3应用freemarker 155 7.3.1freemarker基础 155 7.3.2struts2整合freemarker 166 7.3.3使用struts2标签设计模板 170 7.4freemarker与velocity的比较 171 本章小结 171 ...

    java面试题

    答:Struts1和Struts2是两个完全不同的框架,Struts1以ActionServlet作为核心控制器,由ActionServlet负责拦截用户的所有请求。Struts2以核心控制器FilterDispatcher为基础,包含了框架内部的控制流程和处理机制。 ...

    基于SSH模拟当当网项目(电子商务平台)

    5.将事务管理交个Spring,采用AOP方式,删除原有Struts事务拦截器 -------------改造步骤----------------- 例如用户注册功能 1) 引入Hibernate开发包 2) 引入Spring开发包和配置文件 applicationContext-base....

    Spring、SpringMVC和Mybatis框架整合包

    SpringMVC:它用于web层,相当于controller(等价于传统的servlet和struts的action),用来处理用户请求。举个例子,用户在地址栏输入http://网站域名/login ,那么springmvc就会拦截到这个请求,并且调用controller...

    从J2SE到J2EE知识点介绍

    1. struts2的拦截器定义以及使用 153 2. struts标签 160 3. Struts 2 标签库说明及使用 160 4. set 描述 169 5. text 描述 170 6. property 描述 170 7. Struts的异常处理 171 8. Struts的上传与下载 178 五、 ...

Global site tag (gtag.js) - Google Analytics