当前位置: 代码迷 >> Java Web开发 >> 关于 Struts ActionForward 跳转的有关问题
  详细解决方案

关于 Struts ActionForward 跳转的有关问题

热度:883   发布时间:2016-04-17 01:35:41.0
关于 Struts ActionForward 跳转的问题
简单的说,就是如果在Action 中处理完毕之后,跳转到之前进入这个action的页面!

比如说,在没有登陆的情况下浏览帖子,看到精华之处,想要留言,这个时候从这个帖子所在的位置登陆,登陆成功之后,跳转返回之前浏览的那个帖子所在的页面

再举一个例子,也是在浏览到任意一个页面之后,切换了不同的语言显示,然后页面保持在原来浏览的页面!

望指点一二,有代码说明最好!

------解决方案--------------------
可以用JavaScript解决,总体思想是:用js在父窗口打开新窗口,然后在新窗口触发js关闭自己,然后刷新父窗口:
1.拿你所举的登录例子来说吧,点击登录按钮的时候你可以触发以下事件;
<a href= "# " onclick= "openWin( 'xxx.do?method=xxx& 参数=参数值} ', 'addorg ',600,200); "> 登录 </a>

备注:我的那method=xxx你可以自己考虑用不用,因为我的Action继承了DispachAction,自重parameter是method;
.................

下面这段是打开新窗口的js代码,如果觉得繁琐,也可以写个简单点的....
function openWin(f,n,w,h,s){
sb = s == "1 " ? "1 " : "0 ";
l = (screen.width - w)/2;
t = (screen.height - h)/2;
sFeatures = "left= "+ l + ",top= "+ t + ",height= "+ h + ",width= "+ w
+ ",center=1,scrollbars= " + sb + ",status=0,directories=0,channelmode=0 ";
openwin = window.open(f , n , sFeatures );
if (!openwin.opener)
openwin.opener = self;
openwin.focus();
return openwin;
}

2、在登录页面执行登录,例如点击登录按钮;执行以下代码:

function closewindow(){
if(window.opener){
window.opener.location.reload(true);
window.close();
}
}

以上代码可以返回初始页面,至于登录的时候执行的操作,比如要把用户自己帐号保存到session中,记得自己做吧
希望能帮助你!
------解决方案--------------------
一般都是用一个 returnUrl 做成参数实现的,比如

index.jsp 去登录页面,则

login.jsp?returnUrl=index.jsp

当然,那个returnUrl 可以从 request.getHeader("referer"); 拿到
  相关解决方案