我做了一个extjs 和struts2集成的项目,现在遇到一个问题,要写一个拦截器当session超时时返回登录页面。现在自己定义的拦截器拦截到了请求,但是页面没有跳转,哪位大侠看到了能不能帮着解答一下;
UserInterceptor.javapublic String intercept(ActionInvocation actionInvocation) throws Exception {
System.out.println("拦截器初始化...");
ActionContext ctx = ActionContext.getContext();
Map session = ctx.getSession(); // sessionStudent        
if (session.get("username") == null) {
  return "login";
}
String result = actionInvocation.invoke();
return result;
}struts.xml
<!--继承的是json-default -->
<package name="struts2" namespace="/" extends="json-default">
<interceptors>
<interceptor name="configInterceptor"
class="UserInterceptor">
</interceptor> <interceptor-stack name="myStack"> <interceptor-ref name="configInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>

<interceptor-ref name="myStack"></interceptor-ref>


<default-interceptor-ref name="myStack"></default-interceptor-ref>

<global-results>
<result name="login">/login.jsp</result>
</global-results>哪位大侠帮帮忙啊

解决方案 »

  1.   

    if处你这样写试试:
    if (session.get("username").isEmpty()) {
       return "login";
    }
      

  2.   


    这种if的判断方式和我的判断方式并没差别呀。而且debug模式我也看到看到我们return出去了
      

  3.   

    你用firebug看action的响应,你就知道action返回的是/login.jsp的源码,而不是跳转到那个页面~解决办法:其实我也在找办法~另外,我感觉用不用json-default区别不大啊~你找到办法告诉我一声,[email protected]
    THX.
      

  4.   

    if (session.get("username").equals("")) {
     return "login";
    }
      

  5.   

    这个其实跟你继承extends="json-default">
    有关,而且你在页面用的都是ajax请求的方式吧。它不会转发了,你可以换一种方式,当ajax取不到session中的信息时,根据返回来的结果,你用js去重定向到登陆页面吧。
      

  6.   


    在action中可以用response写一个json,作为ajax的请求相应,但是在拦截器里面,它一定会返回一个页面,如果return null,好像会自动到web项目的主页上;
    前面我已经说,ajax请求action之后,拦截器验证失败,返回登录页面,得到的是login.jsp的源码,我先在的做法是自己写一个temp.jsp,里面存的是json值,然后在 ajax的success中解析json值,然后在js中做跳转~
      

  7.   

    试下
    if (session.get("username")) {
      String result = actionInvocation.invoke();
      return result;
    }else{
      return "login";
    }
      

  8.   

    楼主。请问你的这个问题解决了么?我现在也遇到了这个问题。能不能把解决方案发到我邮箱里面呢?我邮箱是[email protected]。谢谢楼主了。