我用window.open()打开一个新页面,执行添加之后想再调用父页面的查询操作显示添加内容,相信大家也做过吧。在父页面中添加一个hidden值,判断button类型,然后
function submitForm(act) {
//判断事件类型
document.getElementById('status').value = act;
//提交
document.F00009Form.submit();
}
传值。F00009Form在Session中
再进行save操作后,程序如下:
String strActionStatus = f00009form.getStatus();
if((Constant.SAVE).equals(strActionStatus)){
            //Add操作
            if(operation.saveAction(dateManageForm,request)){
                //
                operation.searchAction(dateManageForm, request);
                
                //回F00009页面
                return(mapping.findForward(Constant.SUCCESS));
            }
                               
            return(mapping.findForward(Constant.FAIL));
}
struts.config内容如下:
<action path="/F00009" 
name="F00009Form" 
type="team4.StrutsAction.F00009Action" 
scope="session"
input="/F00009.jsp"
validate="true">
<forward name="success" path="/jsp/F00009.jsp" />
<forward name="search" path="/F00009.do" />
<forward name="fail" path="/jsp/F00009.jsp" />
</action>
当然我也想调用
if((Constant.SAVE).equals(strActionStatus)){
            //Add操作
            if(operation.saveAction(f0009form,request)){
                //
                operation.searchAction(f0009form, request);
                
                f00009form.setStatus("search");
                //回F00009页面
                return(mapping.findForward(Constant.SEARCH));
            }
                               
            return(mapping.findForward(Constant.FAIL));
}
让页面再执行一下do操作,但是不行,第二次执行的还是status的值还是save。
这个问题搞了我一周了,帮我解决下,我实在不行了!!!
问题解决马上揭帖!!!

解决方案 »

  1.   

    operation.searchAction(f0009form, request);
                    
    f00009form.setStatus("search");
                    //回F00009页面
    return(mapping.findForward(Constant.SEARCH));
    ~~~~~~~~
    f00009form的status属性的值虽然重新赋值  但是
    f00009form对象并没有更新
      

  2.   

    window.opener.parent.Location(obj.pguid,obj.guid);
    window.opener:调用的页面
    window.opener.parent调用的父页面
    window.opener.parent.Location父页面中的Location方法
    obj.pguid,obj.guid参数1,参数2
      

  3.   

    fb30000(蛤蟆)
    --------------------------------------------
    f00009form的status属性的值虽然重新赋值  但是
    f00009form对象并没有更新我应该如何解决呢?
      

  4.   

    scope="session"改成request试下
      

  5.   

    不行啊,改成request问题会更多的~
      

  6.   

    我只是想问下:
    operation.searchAction(f0009form, request);
                    
    f00009form.setStatus("search");
                    //回F00009页面
    return(mapping.findForward(Constant.SEARCH));
    ~~~~~~~~
    f00009form的status属性的值虽然重新赋值  但是
    f00009form对象并没有更新这个问题如何解决?
      

  7.   

    当你添加完后调父页面的查询方法
    window.dialogArguments.父页面方法();
      

  8.   


    window.open()打开一个新页面,执行添加之后想再调用父页面的查询操作显示添加内容
    ---------------------------------------------------------------------------------
    给个例子你:var timer;
    var winOpen;
    function IfWindowClosed() 
    {
    var frm = document.yourForm;
    if (SubWin.closed == true) 

    window.clearInterval(timer); frm.action = "your action";//返回到一览 且会显示你刚才增加的记录
    frm.submit();

    } //你要弹出的PAGE
    function doAddPage(parm)
    {
    var form = "";
    var code = "entotu";
    var url = "弹出页面的动作";
    CmWindowOpen(url,'明增加页面,600,800); timer=window.setInterval("IfWindowClosed()",300); 
    }//打开窗口
    function CmWindowOpen(Source, WindowName, wHeight, wWidth){
    CmClose(); scrnW = screen.width;
    scrnH = screen.height; t = (scrnH - wHeight) /2;
    l = (scrnW - wWidth) /2; windowParam = "";
    windowParam += "toolbar=no,menubar=no,scrollbars=yes,status=yes,location=no";
    windowParam += ",directories=no,copyhistory=no,resizable=no";
    windowParam += ",height=" + wHeight + ",width=" + wWidth + ",left=" + l + ",top=" + t; SubWin = window.open(Source , WindowName, windowParam );
    if(SubWin != null)
    {
    SubWin.opener.document.body.onfocus = function() {focuswin(SubWin);};
    SubWin.focus();
    }
    }我现在就这么用的;还凑合~
      

  9.   

    window.open页面在递交form的时候也要
    window.open.document.F00009Form.submit()
    不要忘记