struts2.0 拦截器问题.

ZhaoHuiZiXin 2009-07-08 03:42:00
我做了一个后台管理, 页面用 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失效之后, 跳转到登陆页面. 而不是一个页面中出现两个登陆页面.
...全文
79 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouyh_090120 2009-07-10
  • 打赏
  • 举报
回复
parent.location.href="login.jsp";这样可以不在任何frame里面显示login.jsp
山巅 2009-07-09
  • 打赏
  • 举报
回复
先那一个中间页面,如下: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了!
9441 2009-07-09
  • 打赏
  • 举报
回复
这很容易解决啊

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

if (self.location != top.location) {
top.location.href = self.location.href;
}
hujiale 2009-07-09
  • 打赏
  • 举报
回复
顶,要交流进56389995群
ZhaoHuiZiXin 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 maosenmin 的回复:]
比如你在rigthFrame时出错或者怎么要重新登陆时,这个时候登录页面只是出现在你rigthFrame里吧,并没有把整个top left rigthFrame覆盖掉并转到登录页面吧,这个我也正在考虑,现在还不知道。
[/Quote]
跟我遇到的情况一个样.
lyz0622_1022 2009-07-09
  • 打赏
  • 举报
回复
up
maosenmin 2009-07-09
  • 打赏
  • 举报
回复
比如你在rigthFrame时出错或者怎么要重新登陆时,这个时候登录页面只是出现在你rigthFrame里吧,并没有把整个top left rigthFrame覆盖掉并转到登录页面吧,这个我也正在考虑,现在还不知道。
ZhaoHuiZiXin 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sangshusen_1988 的回复:]
把你被拦截住的请求的跳转的result的type改成redirect看看
[/Quote]

<global-results>
<result name = "toLoginPage" type="redirect">/jsp/login.jsp</result>
</global-results>
但我把跳转路径改为一个页面时候,没有用.
当我该为一个action的时候,就出现死循环了.
这该怎么办啊.
rq2004 2009-07-09
  • 打赏
  • 举报
回复
不要直接跳转到登陆页面,跳转到一个中间页面,这个页面中利用js把父窗口跳转到登陆。
ZhaoHuiZiXin 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 9441 的回复:]
这很容易解决啊

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

JScript code
if (self.location != top.location) {
top.location.href = self.location.href;
}
[/Quote]

还是 10 楼比较强, 我加在login.jsp 页面就可以啦. 能解释这段代码的意思吗?
sangshusen_1988 2009-07-08
  • 打赏
  • 举报
回复
把你被拦截住的请求的跳转的result的type改成redirect看看
qiuli_0421 2009-07-08
  • 打赏
  • 举报
回复
up
ibone 2009-07-08
  • 打赏
  • 举报
回复
帮顶

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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