如何用window.showModalDialog打开弹出子窗口,并在子窗口关闭时刷新父窗口

转载 2011年01月17日 18:57:00

在父页面usermanager.jsp中打开子窗口updateuser.jsp,并在在子窗口关闭时刷新父窗口。

要做的功能是:
如何用window.showModalDialog打开弹出子窗口,并在子窗口关闭时刷新父窗口 - 小川哥 - 我的博客
父页面usermanager.jsp

如何用window.showModalDialog打开弹出子窗口,并在子窗口关闭时刷新父窗口 - 小川哥 - 我的博客
子窗口updateuser.jsp

在点修改的时候,弹出子页面(里面包含此用户的信息)
如何用window.showModalDialog打开弹出子窗口,并在子窗口关闭时刷新父窗口 - 小川哥 - 我的博客
在子页面中,修改完点保存的时候,保存数据,自身关闭,父页面刷新,以显示修改后的数据

功能清楚了,下面我就来实现它!!

 

点 修改时弹出子窗口的代码(用window.showModalDialog主要是让用户必须点此修改响应后才能做其他的任务):

<a href="#" onClick="window.showModalDialog('userupdate.do?userid=<%=lo_dt.uf_GetValue(i, 0)%>',window,'dialogWidth:480px;dialogHeight:180px;status:no;')">修改</a>


userupdate.do中是根据传过去的用户ID取用户的信息,然后再mapping.findforward()到子窗口updateuser.jsp ,在此窗口是显示用户的其他信息。

在子窗口中点保存修改,并刷新父窗口的代码:注意提交方式是在一个iframe中隐式提交 的
<iframe name="commitArea" style='display:none;'></iframe>
<form action="usersave.do" method="post" target="commitArea">

<input type="button" value="保存" onClick="check();">
</form>

<script>
    function check(){
     var obj = document.getElementById("user_dm");
     var obj1 = document.getElementById("user_pwd");
     var obj2 = document.getElementById("user_mc");
     if(obj.value == "" || obj1.value=="" || obj2.value==""){
      obj.focus();
      alert("用户账号、用户名称、用户密码均不能为空!");
     }else{
      document.forms[0].submit();   //提交保存 修改后的数据,usersave.do来保存并mappinf.findforware返回到显示用户列表页面
      window.dialogArguments.window.location="user.do"; //刷新父窗口以显示修改后的数据
       self.close(); //关闭自己
     }
    }
   </script>

这样就可以了吗?经实验查正,确实是可以的。不过还存在一个问题,就是在机子配置比较好的时候,保存的比较快,在刷新父窗口取最新值时,可以取到最新值,但当机子配置比较低时,取到的值还是老数据。这是因为刷新页面的动作 发生 在action里修改保存 之前了!!

如何保证刷新时,已经修改保存完成了呢??

加子页面一个标志变量!!

就是在保存修改的action里面

执行更新语句
request.setAttribute("updateuserok","修改成功");
根据用户ID重新查询用户的信息,保存到request里面,mapping.findforware()到子页面,

在子页面里判断此变量是否存在,并刷新父页面,关闭自己。

<logic:present name="updateuserok">
    <script>
    alert("保存成功!");
    window.dialogArguments.window.location="user.do";
    self.close();
</script>
   </logic:present>

主界面调用子窗口后,子窗口关闭后主界面不消失

做数据库实验的时候,遇到了这个问题,用的netbeans拖拉形成的窗口,在主界面打开一个子窗口后,关闭子窗口后,主界面仍在,这个涉及到JFrame的 frame.setDefaultCloseO...
  • u012493828
  • u012493828
  • 2015年05月28日 09:10
  • 576

打开子页面,关闭父页面时,去掉关闭确认的解决办法

一、在IE6中,如果window.open一个子页面后,再关闭父页面,如果直接window.close()父页面,会弹出一个关闭确认的消息框,怎么去掉这个烦人的东西呢?以登录窗口为例,在login页面...
  • df3855
  • df3855
  • 2008年04月25日 22:31
  • 776

子窗口关闭刷新父窗口或者某个控件事件或者传递值到父窗口

做程序过程,经常遇到弹出新窗口设置或者编辑,关闭新窗口需要在父窗口中刷新部分控件或者数据,又不想刷新父窗口整个页面,因为父窗口部分输入或者部分操作会因为重新刷新重置。比如:通过弹出窗口来编辑和新增信息...
  • u012767263
  • u012767263
  • 2014年01月17日 16:55
  • 1068

window.showModalDialog刷新父窗口 父子窗口之间传值

第一个问题:刷新父窗口(没有传值操作)   父页面打开时一定要传window参数   openModalDialog("son.html",window,800,600);   子页面...
  • ZKLxuankai
  • ZKLxuankai
  • 2012年10月19日 19:36
  • 5089

子窗口在用window.open()方法打开后,如何关闭后刷新父窗口

需求 在网站开发过程中,经常会有需要通过A页面打开B页面,在B页面操作完毕后,返回到A页面并刷新B页面相关信息。 解决方式 A页面增加JavaScript公共变量进行全局控制,通过启动、...
  • mystonelxj
  • mystonelxj
  • 2018年02月02日 09:05
  • 16

java中窗口的打开与关闭

作为小白的我,今天学习了java中打开与关闭窗口的方法。 1.在java中创建一个窗口import java.awt.*; import java.awt.event.*; public class...
  • lpq1201
  • lpq1201
  • 2017年09月18日 15:19
  • 608

swing 子窗口关闭时刷新父窗口

基本原理是这样的: 1、在父类中定义一个刷新父窗口内容的方法; 2、在父窗口中打开子窗口时,将父窗口的实例也传给子窗口; 3、子类中创建一个父类实例的属性,在子类在构造方法中用此属性接受传过来的父类实...
  • laoyaotask
  • laoyaotask
  • 2014年01月09日 23:11
  • 2467

父窗口打开子窗口,子窗口关闭后自动刷新父窗口

可以在任何地方插入代码 window.onunload = function(){ window.opener.location.reload(); } 子窗口处理完后可以调用c...
  • u013310119
  • u013310119
  • 2016年05月17日 20:54
  • 1003

怎样在Java Applet中实现子窗口始终显示在主窗口上面

要让子窗口始终显示在主窗口上面只要将主窗口作为子窗口的一个参数,保证主窗口始终在子窗口之前创建就可以了,但是Applet是Panel类的子类,不 可以作为对话框的父窗口.,所以首先要获得applet所...
  • hp7981
  • hp7981
  • 2005年09月13日 09:18
  • 2791

java关闭当前窗口打开另一窗口

在java中释放当前窗口可以使用this.dispose(); 不能用System.exit(0)\因为这样会关闭JVM中所有的资源,也就是关闭所有界面,等于结束当前程序。 原文地址:http://...
  • lyhDream
  • lyhDream
  • 2013年09月04日 22:10
  • 2500
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何用window.showModalDialog打开弹出子窗口,并在子窗口关闭时刷新父窗口
举报原因:
原因补充:

(最多只允许输入30个字)