在struts config 配置文件 <forward path="/xx.jsp" name="info" color="#ff0000"></forward>redirect="true"> 把地址重定向
既在IE地址中不会出现xx.do
弹出窗口刷新它的父页面后。出现不重新发送信息,则无法刷新网页
因为做程序中遇到这个问题,所以搜索到了火靶子的文章 ,文章和回复中大致有上大致有以下几种解决方法:
方法1:
window.opener.location.reload();
这种方法用于已经提交了数据的页面会提示标题信息;
点确定后后数据更新;
方法2:
window.opener.location.href=window.opener.location.href;
这种方法会丢失当前浏览器内的信息;
方法3:
window.location.href=window.location.href ;
window.location.reload;
这种.....
方法4:
很简单,为了防止探出刷新的东西,可以把向父窗口提交的那个FORM改成GET属性,而不使用POST属性就可以了!
在我的代码里测试,出现javascript错误,没有仔细研究;
方法5:
将下面的代码写在脚本文件里,然后在服务器端调用就可以了
function bb()
{
var x = window.parent.dialogArguments;
x.Relocation();
window.close();
}
效果如方法1.
但如果,他的父页面是嵌套在另一个页面 A 中,怎么刷新页面A?
Gapple的方法:
我在工作中的ASP.NET项目中也遇到了这个问题,需要在添加修改等操作以后关闭子窗口,同时刷新父窗口,非常的棘手,我浏览了以上各位的回复,但都失败了,呵呵,不是各位的代码和思路有问题,是我使用的是window.showModelessDialog()。
我是这样解决的:
首先在父上放一个刷新列表用的按扭控件,然后对它进行编程,调用onClick来运行Codebehind里的C#函数,当然,这些都是和你的程序有关的东西,大家自己研究,以我的程序为例,我在这个按扭上运行了一个公用类的一个函数,用来render当前页的DataGrid。我把这个按扭控件的ID设为refresh,其实什么都可以。
然后在子窗体上的添加或者修改按扭上的服务器端事件中注册一个js代码块来执行window.dialogArguments.document.forms[0].refresh.click();
之所以没有self.close()是因为父窗体提交以后,IE6会自动关闭子窗体,子窗体消失的速度非常快,可以说是自动的self.close()。
好了,以上代码都写好了以后,就可以在父窗体的DataGrid的SelectedIndexChanged事件中调用函数来注册js代码块。来执行window.showModelessDialog()。
由于本人目前专心开发ASP.NET程序,并且都是使用ModelessDialog来力争实现一种WinForm的外观和用户体验,所以对这个父子窗口的功能非用不可。呵呵,虽然这个方法不是什么太高明的方法,需要在父窗体上放一个刷新按扭,并且还要对这个按扭编程刷新ASPX页,但由于有ASP.NET特有的一些form特性,使得以上的实现效果还是非常好的。但不知道离开了ASP.NET环境,这个刷新按扭还应该做什么其它的考虑了,不做ASP.NET的话,我这个方法恐怕实现起来还是显得比较笨拙了。不过,在ASP.NET环境中调用的话,效果的确非常理想。
不是很明白
受Gapple兄的启发
,我得想法是主动提交父窗口的form,javascript代码如下:
window.opener.window.document.forms(0).submit();
这样服务器端会主动提交一次form.如果之前没有考虑form主动提交的情况,再返回的页面信息可能也会有些丢失.不过既然球已经被主动踢倒后台,我们在后台稍做改动就能得到更新数据后的父页面.
多亏了form,不过如果没有form的话又何来提交数据的动作而带来的提示窗口呢呢.我晕了
写完了又重新遍历以下原文章,路人已经在回复中说到了这个方法,看来网上真的没有不能解决的问题.呵呵,
我等懒人有福了