当我们使用frameset来构建页面的时候, 会遇到一个问题,就是当我们想通过里面的某个页面的某个链接来退出系统到登录界面的时候, 会另整个frameset保持不变,而只有那个页面跳转回了登录界面。
这里详细的把这个环境记录下来以便以后学习。
项目构建图如下:
[img]http://dl2.iteye.com/upload/attachment/0092/1293/82c14333-afe9-3087-b906-66045b99e082.jpg[/img]
网页界面如下:
[img]http://dl2.iteye.com/upload/attachment/0092/1291/ae79624c-a47c-3c02-a599-d97133ae372a.jpg[/img]
这里中上的是top.jsp文件,
这个文件通过SpringMVC的控制器路径来登出界面,然后返回到login.jsp页面。
然而当我们点击“退出系统”的时候,发现只有top.jsp页面所在的frame被导航到了login.jsp。
这显然不是我们所期望的。
这里的解决方法是, 我们必须让frame的父级元素去请求控制器,从而让父级的页面整个被导航回到login.jsp。
具体方法如下:
首先新建一个javascript方法, 这里我们要让javascript来帮助我们调用父级的页面来访问后台。
contextPath是一个隐藏类型的input, 也就是contextPath的值。
这里window.parent也就是全局的最外级页面(我个人理解)
这里使用window.top.location.href也会起到同样的效果。
然后修改top.jsp文件为:
再次点击, 便会让整个页面被导回login.jsp页面了。
完整源码:
这里详细的把这个环境记录下来以便以后学习。
项目构建图如下:
[img]http://dl2.iteye.com/upload/attachment/0092/1293/82c14333-afe9-3087-b906-66045b99e082.jpg[/img]
网页界面如下:
[img]http://dl2.iteye.com/upload/attachment/0092/1291/ae79624c-a47c-3c02-a599-d97133ae372a.jpg[/img]
这里中上的是top.jsp文件,
<body>
<div id="top">
<div id="topIntro">
<a href="<%=path%>/admin/logout">退出系统</a>
</div>
<div id="remind">
<span id="showDate">欢迎光临</span>
</div>
</div>
</body>
这个文件通过SpringMVC的控制器路径来登出界面,然后返回到login.jsp页面。
然而当我们点击“退出系统”的时候,发现只有top.jsp页面所在的frame被导航到了login.jsp。
这显然不是我们所期望的。
这里的解决方法是, 我们必须让frame的父级元素去请求控制器,从而让父级的页面整个被导航回到login.jsp。
具体方法如下:
首先新建一个javascript方法, 这里我们要让javascript来帮助我们调用父级的页面来访问后台。
<script type="text/javascript">
function exitSystem(){
window.parent.location.href=$("#contextPath").val()+"/admin/logout";
}
</script>
contextPath是一个隐藏类型的input, 也就是contextPath的值。
这里window.parent也就是全局的最外级页面(我个人理解)
这里使用window.top.location.href也会起到同样的效果。
然后修改top.jsp文件为:
<input type="hidden" id="contextPath" value="<%=path%>"/>
<div id="top">
<div id="topIntro">
<a href="javascript:exitSystem()">退出系统</a>
</div>
<div id="remind">
<span id="showDate">欢迎光临</span>
</div>
</div>
再次点击, 便会让整个页面被导回login.jsp页面了。
完整源码: