struts2 отправляет форму и показывает результат в новом окне

#struts2 #window #show

#struts2 #окно #показать

Вопрос:

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();
 

}

На странице editTracker.jsp мне нужно нажать кнопку отправки, чтобы отобразить переменную результата, определенную в действии на странице jsp / thankyou.jsp в новом окне, страница editTracker.jsp все еще остается там после отправки формы как struts.xml настроен, но я не могу получить результат в jsp/thankyou.jsp, потому что этовсплывающее окно появляется перед отправкой формы saveTracker.

Ответ №1:

Вероятно, вам было бы лучше отправить форму через ajax, а затем открыть новое окно.

Если вы отправляете форму с обычным запросом, страница обновится; именно так это и работает. Если вы имеете в виду, что отправка формы снова перезагружает ту же страницу, это нормально, но вам все равно нужно взаимодействовать с сервером, прежде чем откроется новое окно.

Ответ №2:

попробуйте использовать свою форму примерно так, как показано ниже, а также использовать следующую функцию 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;
        }
 

Я также выполнил некоторое форматирование для нового окна.

С уважением.