Struts2 拦截器 配置IFrame页面跳转

博客原文:http://hi.baidu.com/kangjun118/item/6056bd22e1af3b012a0f1c6b

我做了一个后台管理, 页面用 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>
View Code

当 session 失效之后再去刷新页面, 于是这两个 action 都跳到登陆页面. 这样就出现了两个登陆页面.

要解决的问题就是在session失效之后, 跳转到登陆页面. 而不是一个页面中出现两个登陆页面.

 

解决办法:

1)在你的login.jsp中,加一段脚本

JScript code
 
if(self.location!=top.location) {  top.location.href=self.location.href;}
View Code

 

2)新建一个中间页面,如下:

relogin.jsp

<html> 

    <head>

    <title></title> 

    <script type="text/javascript"> 

        window.top.location='<%=request.getContextPath()%>';   

    </script>

    </head> 

</html>
View Code

然后,在struts.xml里面配置一个全局结果:

<global-results>   

    <result name="relogin" >/jsp/relogin.jsp</result> 

</global-results> 
View Code

最后,在拦截器中跳转到这个全局结果

posted @ 2013-07-03 22:41  Jodie.Hpiness  阅读(692)  评论(0编辑  收藏  举报