我做了一个后台管理, 页面用 table 中嵌入 iframe 做的.
后台首页分3个部分, top.jsp 顶部的页面.
                   left.jsp 左侧的菜单页面.
                   right.jsp 右侧显示类容页面.
在left.jsp 中 有一个 iframe: <iframe id="leftMenuFrame" name="leftMenuFrame" src="<%=request.getContextPath() %>/backManage/toLeftJsp.shtml"/>在right.jsp 中 也有一个 iframe: <iframe id="leftMenuFrame" name="leftMenuFrame" src="<%=request.getContextPath() %>/backManage/toRightJsp.shtml"/>我在这两个 action 的配置文件中都配置了拦截器.<package name="backManage"  extends="tour" namespace="/backManage">
     <!-- 到后台左侧页面 -->
     <action name="toLeftJsp" class="BackManageAction" method="toLeftJsp">
         <result name="success">/jsp/left.jsp</result>
         <interceptor-ref name="loginAdminInterceptor"></interceptor-ref>
         <interceptor-ref name="defaultStack"/>
     </action>
     <!-- 到后台右侧页面 -->
     <action name="toRightJsp" class="BackManageAction" method="toRightJsp">
         <result name="success">/jsp/backRight.jsp</result>
         <interceptor-ref name="loginAdminInterceptor"></interceptor-ref>
         <interceptor-ref name="defaultStack"/>
     </action>
   </package>当 session 失效之后再去刷新页面, 于是这两个 action 都跳到登陆页面. 这样就出现了两个登陆页面.我想解决的问题就是在session失效之后, 跳转到登陆页面. 而不是一个页面中出现两个登陆页面.

解决方案 »

  1.   

    把你被拦截住的请求的跳转的result的type改成redirect看看
      

  2.   


    <global-results>
           <result name = "toLoginPage" type="redirect">/jsp/login.jsp</result>
    </global-results>
    但我把跳转路径改为一个页面时候,没有用.
    当我该为一个action的时候,就出现死循环了.
    这该怎么办啊.
      

  3.   

    比如你在rigthFrame时出错或者怎么要重新登陆时,这个时候登录页面只是出现在你rigthFrame里吧,并没有把整个top left rigthFrame覆盖掉并转到登录页面吧,这个我也正在考虑,现在还不知道。
      

  4.   

    这很容易解决啊在你的login.jsp中,加一段脚本if (self.location != top.location) {
      top.location.href = self.location.href;
    }
      

  5.   

    先那一个中间页面,如下:relogin.jsp
    <html>
    <head>
    <title>福建中邮物流业务辅助处理系统</title>
    <script type="text/javascript">
          window.top.location='<%=request.getContextPath()%>';
            </script>
    </head>
    </html>,
    然后,在struts.xml里面配置一个全局结果:
    <global-results>
        <result name="relogin" >
    /jsp/relogin.jsp
       </result>
    </global-results>
    最后,在拦截器中跳转到这个全局结果就OK了!
      

  6.   


    还是 10 楼比较强, 我加在login.jsp 页面就可以啦. 能解释这段代码的意思吗?
      

  7.   

    parent.location.href="login.jsp";这样可以不在任何frame里面显示login.jsp