不好意思:) 是showModalDialog 不是showModelessDialog!!!!!!!

解决方案 »

  1.   

    那看你的服务器了,如果是tomcat就会出现这个问题,weblogic就不会了
      

  2.   

    to: stonecsdn(东东) 
    谢谢你:能说明一下具体原因么?
      

  3.   

    是呀! 有的机子可以取到,有的取不到:(说一下页面的流程吧!
    首先是一个列表页面(主页面),里面有添加,删除的功能, 点击添加,用open打开一个新的html, 在这个新的页面中,可以用html编辑器输入内容,用到编辑器时,在这个页面中用showModalDialog方法打开html编辑,在编辑器中选择上传图片的功能,用showModalDialog打开插入图片的html,在上传图片的html中可以选择本地上传文件和服务器上的文件, 选择服务文件时,用open方法请求一个servlet,就是这个servlet取不到session了.(最后只能用open打开servlet)
    唉,不知道你说清楚了没,简化一下
    主页面 用open打开--->添加页面 用showModalDialog打开--->html编辑器 用showModalDialog打开--->上传图片页面 用open打开--->servlet!!! 在这取不到session了
      

  4.   

    showModalDialog 和showModelessDialog 都会出现丢失session现象
    所以正确而又可靠的方法是不用session而用隐藏域传递参数值
    window.showModelessDialog("yourpage.jsp",window,"dialogWidth:200px;dialogHeight:360px;center=yes;status=no;help=no;scroll=yes;");
     
    yourpage.jsp
    -----------------
    var pwin = window.dialogArguments;
    pwin就是对父窗口的引用,跟通常弹出窗口的opener类似,剩下的就不用多说了吧
      

  5.   

    to:youthy_yy(希望我的回帖能对您有所帮助)
    可是我这几个页面都是静态的html呀! 取不到session!! 列表页面又是写死的,不能改!本可做一个jsp来取session,然后传参数,但是会破坏页面结构,上头不允许呀:( !!!
      

  6.   

    一般情况下session是通过cookie来保存sessionid的, 模式窗口不传递cookie, 所以服务器拿不到sessionid,自然也就不能找到session. 解决办法是首先设置服务器软件可以通过url取sessionid,然后在客户端的html页面中通过分析cookie, 将session做为jsp的url参数来传递就可以了.当然要根据你使用的不同的java服务器软件来找其对应的cookie, 因为他们使用的cookie名字是不同的.
    附在html中设置及取得cookie值的javascript脚本:
    ==========cookie.js=================
    function getCookie(name) {
        var start = document.cookie.indexOf(name+"=");
        var len = start+name.length+1;
        if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
        if (start == -1) return null;
        var end = document.cookie.indexOf(";",len);
        if (end == -1) end = document.cookie.length;
        return unescape(document.cookie.substring(len,end));
    }function setCookie(name,value,expires,path,domain,secure) {
        document.cookie = name + "=" +escape(value) +
            (expires ? ";expires=" + expires.toGMTString() : "")+
            ( (path) ? ";path=" + path : "") +
            ( (domain) ? ";domain=" + domain : "") +
            ( (secure) ? ";secure" : "");
    }function delCookie(name,path,domain) {
        if (getCookie(name)) document.cookie = name + "=" +
            ( (path) ? ";path=" + path : "") +
            ( (domain) ? ";domain=" + domain : "") +
            ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
    }
      

  7.   

    我以前也遇到过session丢失的情况。
    这与web服务器和浏览器都有关。
    版本高的浏览器每开一个窗口都创建不同的 sessionID,
    所以原来的窗口的session不会传到新开窗口中。
    可以通过 HttpSessionBindingListener 对象检测他们的sesionid。
      

  8.   

    模式窗口不传递cookie???在 asp 里面天天用showModalDialog 和showModelessDialog这两个东东,
    可是我从来就没碰到过这种情况啊!