日期:2014-05-17  浏览次数:20626 次

window.open()/弹出新窗体、url传参无法获取问题!!!
郁闷~~~老郁闷了!有一个编辑页面、用弹出窗口方式实现编辑、在编辑之间、需要传递参数到后台去数据库取值:
刚刚开始的时候、使用OpenDialog弹出模式对话框、这样在后台取URL参数时、没有问题。但是在弹出的编辑页面中、还有一个弹出窗口、用于添加(就像、添加类型这类的东西)、Ajax方式添加完毕后、关闭添加页面、需要刷新当前编辑页面。所以、使用OpenDialog方式就无法完成刷新功能、于是换成了open。但是使用open方法弹出窗体时、后台取不到URL参数。
list页面中open代码:

function OpenWindowsHzw(FileName, OpenW, OpenH) {
var w, h, str;
w = (window.screen.availWidth - 27) / 2 - OpenW / 2;
h = (window.screen.availHeight - 8) / 2 - OpenH / 2;
str = "width=" + OpenW + ",height=" + OpenH + ",top=" + h + ",left=" + w
+ ",resizable=0,scrollbars=yes";
var newWin = window.open(FileName, "window", str);
newWin.focus();
}

function doEdit() {
var id = $("#hiddenid").val();
if (null == id || "" == id) {
return alert('请选择会议室!');
}
var str = "<%=path%>/platform/meetresedit!getMeetById.action?meetResId=" + id;
alert(str);
OpenWindowsHzw(str,550,400);
window.location.reload();
}


提交到Action后、在Action中获取meetResId的值为:null(但是有时候、又可以获取):

                  String meId = null;
try {
                           //这种方式也是鸟的
                           Object obj = ActionContext.getContext().get("meetResId");
                           //有时候、跑到这一句的时候、报空指针异常
meId = request.getParameter("meetResId");
} catch (Exception e) {
e.printStackTrace();
}

在千万次的Debug中、会有那么一两次人品爆发、取得到它的值。

------解决方案--------------------
你先把reload去掉看下
------解决方案--------------------
模态框存在缓存,所以在使用OpenDialog弹出模式对话框的时候,注意后头带个参数,如:
var now = new Date();
var url = 'Xxxxxx?a='+'&now'+now.getTime();