struts2拦截器AbstractInterceptor的问题

javaltzh123 2013-11-25 05:42:34
环境:struts2 2.3.15 spring 3.2 hibernate 4
通过继承AbstractInterceptor对登陆进行拦截,但无法进行实例化登陆类(LoginLogoutAction.java),

struts.xml配置

<interceptor name="checkPrivilege" class="cn.rayton.struts2.interceptor.CheckPrivilegeInterceptor"></interceptor>
<!-- 定义拦截器栈 -->
<interceptor-stack name="myStack">
<interceptor-ref name="checkPrivilege"></interceptor-ref>
<interceptor-ref name="paramsPrepareParamsStack"></interceptor-ref>
</interceptor-stack>
<!-- 配置默认要使用的拦截器栈,对本包中的Action都有效 -->
<default-interceptor-ref name="myStack"></default-interceptor-ref>



拦截器部分代码:

public class CheckPrivilegeInterceptor extends AbstractInterceptor {

private static final long serialVersionUID = 1L;

@Override
public String intercept(ActionInvocation invocation) throws Exception {
// 打印出类名
System.out.println("Action:"+invocation.getAction().getClass().getName());
//找到运行的ActionProxy对象,并打印其要运行的方法名
System.out.println("Method:"+invocation.getProxy().getMethod());
if (invocation.getAction() instanceof LoginLogoutAction) {
return invocation.invoke();
}
.........其他省略
}
}

打印结果:

Action:com.sun.proxy.$Proxy32
Method:login


在原来环境 struts2 2.1.8 spring2 hibernate3中没问题,升级成struts2 2.3.15就出现这个问题,大家帮忙分析分析什么情况?
未升级之前打印出的结果为:
Action:LoginLogoutAction
Method:login



...全文
221 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
javaltzh123 2013-11-28
  • 打赏
  • 举报
回复
该问题未解决
堕落在雨季 2013-11-25
  • 打赏
  • 举报
回复
建议你下载下对应版本的Structs源码,看下getAction()方法的实现是否使用的动态代理,另外也可以打下断点Debug跟踪下就能找出原因了
堕落在雨季 2013-11-25
  • 打赏
  • 举报
回复
去看一下动态代理吧

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧