拦截器后Struts 2没有数据错误

时间:2011-03-29 08:22:53

标签: struts2

我创建了一个全局拦截器,它将检查会话超时。

<interceptors>
                <interceptor class="com.action.SessionChecker" name="sessCheck"> </interceptor>
                </interceptors>

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

`

现在在SessionChecker中我检查会话超时

@Override
    public String intercept(ActionInvocation arg0) throws Exception {

        String result;
        Map<String,Object> session = arg0.getInvocationContext().getSession();


          if(session.isEmpty()){

                  result="session_Timeout";

              }
          else
              result=arg0.invoke();

        return result;
    }

在每个请求拦截器被调用之前,然后它不会转到该请求的动作类,虽然我得到了相应的请求页面但没有数据。

1 个答案:

答案 0 :(得分:2)

配置中的以下行是将会话超时拦截器配置为堆栈中唯一的拦截器,这当然不是您想要的。

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

相反,您需要定义一个包含您要使用的所有拦截器的堆栈,并将其定义为默认值。

此外,您构建的拦截器实际上并未检测到会话已超时,而只是会话为空。我不确定填充你的会话是什么,但如果在新会话被正确填充之前调用此拦截器,它将被错误地识别为超时。