struts2提交表单并在新窗口中显示结果

时间:2011-10-28 19:37:14

标签: struts2 window show

struts.xml中

<action name="run" class="editTrackerAction" method="run">
        <result name="input">/jsp/editTracker.jsp</result>
    </action>

editTracker.jsp

<s:form method="post" name="saveTracker" id="saveTracker">
<input type="submit" name="executeEntityButtonName"
                id="executeEntityOnTableSubmit" value="Run Entity"  onclick="executeEntityOnTable();">

* .js有功能

function executeEntityOnTable() {

    document.saveTracker.action="run"; 
document.saveTracker.onsubmit=window.open('jsp/thankyou.jsp', 'executeEntityOnTable', 'width=450,height=300,status=yes,resizable=yes,scrollbars=yes');
document.saveTracker.submit();

}

在Page editTracker.jsp中,我需要单击“提交”按钮以在新窗口中显示在页面jsp / thankyou.jsp中定义的结果变量,在提交表单后,editTracker.jsp页面仍然保留在那里,配置为struts.xml,但是我无法在jsp / thankyou.jsp中得到结果,因为它在saveTracker表单提交之前弹出。

2 个答案:

答案 0 :(得分:2)

您可能最好通过ajax然后打开新窗口提交表单。

如果您提交包含正常请求的表单,该页面将会更新;这就是它的工作方式。如果您的意思是表单提交再次重新加载相同的页面,那很好,但您仍然需要在新窗口打开之前与服务器进行交互。

答案 1 :(得分:0)

尝试使用下面的表单,并使用以下javascript函数。

<form name="myForm" action="myaction.do" method="post" 
              onsubmit="return createTarget(this.target)" target="formtarget">

javascript函数....

function createTarget(t){

           var left = (screen.width/2)-(700/2);
        var top = (screen.height/2)-(550/2);
        window.open("", t,"status = 1,height = 550,width = 700,resizable = 1,left="+left+",top="+top); 

            return true;
        }

我也为新窗口做了一些格式化。

的问候。