Struts重定向页面问题
问题:
点击主页面一个查询按钮,我用window.showDialogModal('search.jsp') 弹出search.jsp页面,
在search.jsp页面输入好查询条件点击提交,便进入ACTION进行处理后,便用mapping.findForward('display')
通过配置文件再转到主页面。(就这时问题出现了,他不是刷新主页面 而是重新又打开了个主页面)
需求:让他重新定向到原主页面,不让他新打开。
说明:请勿让我绕道行走,如果不用window.showDialogModal打开 直接用ACTION就没问题。但我现在就像搞明白类似于
window.open等这种新打开的页面,怎么重新定向到主页面。
[解决办法]
我好像做过这样的东西,给你一些代码不知道有没有用
这是一个userlist.jsp页面,其中有一个按钮是增加用户的,点击该按钮会调用一段js
function adduser()
{
var returnValue;
returnValue = window.showModalDialog('../userAdmin/userAdminAction.do?action=initAdd',returnValue,'dialogWidth:600px; dialogHeight:750px; center:Yes; resizable: Yes; help: No;');
if (returnValue=='true')
{
alert('<bean:message bundle="common" key="new.success"/>');
window.location="userList.jsp";
}
}
我这里的action处理完毕后会导向一个adduser.jsp页面,这个action只是为了在adduser.jsp显示时做一些处理,然后,我在adduser.jsp中使用了ajax
核心代码如下
var xmlHttp = init();
xmlHttp.open("POST", url, false);
xmlHttp.send();
if (xmlHttp.responseText =="repeat")
{
alert('<bean:message bundle="common" key="username.repeat"/>');
return;
}
else
{
returnValue='true';
window.close();
}
adduser.jsp也是提交到一个action的,但是这个action返回值为空,但是里面有如下的语句response.getWriter().write("success");这个语句
会由xmlHttp.responseText 获得的,此时会返回 returnValue='true'这样的话,页面就又返回到userlist.jsp了,不知道说清楚没有。
[解决办法]
这个是adduser.jsp提交到的action
public ActionForward saveUser(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
/**登录名*/
String loginname=request.getParameter("loginname");
/**全名*/
String name=request.getParameter("name");
/**密码*/
String password=request.getParameter("password");
/**部门*/
String department=request.getParameter("department");
/**描述*/
String description=request.getParameter("description");
/**所在组*/
String selectedgroup=request.getParameter("selectedgroup");
----------略------------------
boolean lgname=userService.getUser(hql.toString());
if(!lgname)
{
response.getWriter().write("repeat");
return null;
}
userService.saveUser(user,group,paramIds,selectValues,rootpath,resourceService);
-----略---------
return null;
}
[解决办法]
在主页面上设置target
[解决办法]
在head标签中加入
<base href="<%=basePath%>" target="_self">
[解决办法]
原因: 你用window.showDialogModal('search.jsp') 弹出search.jsp页面,那你提交的当然是search.jsp中的数据,那跳转当然也跳转'search.jsp'
解决办法: search.jsp中的提交交由打开他的页面去做,可以在打开他的页面上加入hidden框,search.jsp中的提交按钮用来对打开他的页面中的hidden进行付值(windows.opener.document.getElementById("xxxx") = document.getElementById("xxxx")),并且调用window.opener.submit();把hidden框提交到后台处理
[解决办法]
学习~~~
------解决方案--------------------
因为你的查询是跳出窗口,所以就重新定向到你的跳出窗口里了,你可以先关掉你的弹出窗口,然后刷新父页面呢?
[解决办法]
不管用不用ajax,新窗口和原窗口的关系必须要明确
target="_parent"或者window.opener或者parent.js方法()
[解决办法]
通过action处理,是不会多弹出一个窗口吗?
window.showDialogModal是属于GUI程序了吧!!
改成Web程序算了.
[解决办法]
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;}
[解决办法]
最后我们又mapping.findworad("chilePage.jsp")页面中去,在chilePage.jsp页面中,写上一段小代码和小Script
funcion RefreshOpener(){
opener.Refresh();//刷新母窗口,Refresh()方法名要与母窗口的方法名保持一致.
windows.close();//关闭子窗口
}
<%
String result = (String)request.getAtribute("result");
if("ok".equal(result)){
out.println("RefreshOpener();");
}
%>//具体API有没有写对,我不太清楚,你自己下去更改一下>_<
===========================最后在母窗口中的Script====================================
function Refresh(){
window.location.reload();//刷新母窗口
}
======================================================================================
注:我的解说思路是从一个程序运行的路线来一步步讲解的.应该还是比较好理解的.重要的是我的思路,不是代码!
[解决办法]
能不能先关闭父窗体,再打开forward指向那个啊.
[解决办法]
路过
[解决办法]
o mingbai l
[解决办法]
兄弟,不要在csdn上搞销售,遵守规则。。
[解决办法]
学习中...
[解决办法]
jf;asjdf;lkjsdkfjlksdjflk sdkflksdjflks slkdfjlksd s ;kldjf;lskdj;flk
[解决办法]
学习一下………………………………
[解决办法]
学习ing!
[解决办法]
学习了.
[解决办法]
学习~~
[解决办法]
刚开始学,来吸收下大家的仙气
[解决办法]
学习~~~
[解决办法]
我也想知道
[解决办法]
哎,这么多人回复,没一个说到点子上
window.showDialogModal打开的模态窗口里提交表单,不管怎么样都会打开一个新窗口
解决办法是,把页面放到iframe里面,在iframe里面提交就不会出现这种情况
添加一个jsp,就叫Iframe.jsp吧
在Iframe.jsp里,放一个iframe,这个iframe指向search.jsp
然后
window.showDialogModal('IFrame.jsp')
这样search.jsp里提交表单就不会在新窗口里打开了
[解决办法]
支持。
[解决办法]
支持
[解决办法]
点击主页面一个查询按钮,我用window.showDialogModal('search.jsp') 弹出search.jsp页面,
可以在search.jsp中写个js方法 把你写的查询条件赋值给父类窗口中的隐藏域,然后调用父类窗口里面的提交方法就行。
你试试。
[解决办法]