问题描述:
为action类中的一个方法加入事务特性。
<aop:config>
<aop:pointcut id="targetMethod"
expression="(execution(* com.gtadata.vms.service.*.*.*(..)))
or (execution(* com.gtadata.vms.service.*.*(..)))
//新增的表达式:TempUsersAction类中的saveApplicationinfo方法
or (execution(* com.gtadata.vms.action.manager.TempUsersAction.saveApplicationInfo(..)))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="targetMethod" />
</aop:config>
后台报错:
java.lang.NoSuchMethodException: $Proxy12.TempUsersList()
at java.lang.Class.getMethod(Class.java:1605)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.getActionMethod(AnnotationValidationInterceptor.java:75)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:47)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
解决方法:
原因是由于在aop的切点加入了action类的方法。导致struts不能找到这个action类下的所有方法。
$Proxy12.TempUsersList()该错误 网上有一种解决方式是不让这个action类继承actionSupport。
自己的解决方式是:在上述spring配置文件的代码 <aop:config>中增加:<aop:config proxy-target-class="true">