如何在通过Javascript在新窗口中打开jsp时将表单参数传递给Action类

如何在通过Javascript在新窗口中打开jsp时将表单参数传递给Action类,javascript,struts2,Javascript,Struts2,下面是Javascript函数调用,我在其中调用struts操作,该操作反过来解析为jsp。在单独窗口中打开的jsp页面中,我有一个带有几个文本框、下拉列表和提交按钮的表单。当我提交填写的表单时,我无法获得所有这些表单字段,尽管这些实例变量是在action类中定义。这里有我遗漏的东西吗 function editQuestions(val) { window.open("fetchQuestionAction.action?"+ "quesId="+val,'mywind

下面是Javascript函数调用,我在其中调用struts操作,该操作反过来解析为jsp。在单独窗口中打开的jsp页面中,我有一个带有几个文本框、下拉列表和提交按钮的表单。当我提交填写的表单时,我无法获得所有这些表单字段,尽管这些实例变量是在action类中定义。这里有我遗漏的东西吗

function editQuestions(val) {
    window.open("fetchQuestionAction.action?"+
        "quesId="+val,'mywindow','width=400,height=200');
}

要在新窗口中获取数据,您可以:

  • 将数据发布到将其放入会话的不同操作。然后打开窗户。POST操作应该通过AJAX完成,以避免不必要地重新加载页面
  • 将表单字段中的数据添加到window.open第一个参数的URI的查询字符串中。然后,您可以在服务器上使用这些数据来呈现新页面,或者将其发送到隐藏字段中,然后在客户端上使用

  • 要在新窗口中获取数据,您可以:

  • 将数据发布到将其放入会话的不同操作。然后打开窗户。POST操作应该通过AJAX完成,以避免不必要地重新加载页面
  • 将表单字段中的数据添加到window.open第一个参数的URI的查询字符串中。然后,您可以在服务器上使用这些数据来呈现新页面,或者将其发送到隐藏字段中,然后在客户端上使用

  • 您可以从表单字段读取数据并将其作为请求参数附加到URL吗。这样,参数就可以在打开的窗口中使用。

    您可以从表单字段中读取数据,并将其作为请求参数附加到URL中吗。这样,参数就可以在打开的窗口中使用。

    在Struts2中,您不必
    打开jsp页面。您(浏览器)打开一个url,该url映射到显示(通常)jsp的操作。我不明白你在做什么。也许您应该包括一些涉及的模式(URL、操作、jsp)。您应该在queston中给出子窗口的代码。您到底得到了什么错误?您尝试过Mark Guk的第二个选项吗?您没有在Struts2中打开jsp页面。您(浏览器)打开一个url,该url映射到显示(通常)jsp的操作。我不明白你在做什么。也许您应该包括一些模式(URL、操作、jsp)涉及。您应该在queston中给出子窗口的代码。您到底遇到了什么错误?您尝试过Mark Guk的第二个选项吗?我在一个父JSP上,使用window.open调用子JSP并提交子JSP,但无法提取动作类中子JSP的表单字段看起来像您遗漏了一些东西。当您通过window.open()打开新的“JSP”时,您将在客户端上执行该操作。因此,当呈现子页面时,将调用子操作。由于此页面尚未由用户提交,您在子操作中未获得任何内容。看起来您的问题不在window.open中,而是在JSP本身中,所以Struts没有将POST参数设置为Action类?我可以将表单字段发布到Action类中,并在DB中进行mu更新。但问题是如何以及在何处关闭打开的窗口,因为表单提交后我不需要它。相反,表单提交后窗口应该自动关闭submitted@Sam:那就这样做吧在DB中更改发送JSP和JavaScript,通过调用
    window.close()
    为您关闭窗口。另外请注意,
    窗口.close
    仅在通过
    窗口.open
    打开的窗口中才能正常工作。因此,在您的情况下,正如我所理解的,它符合您的需要。我在一个父JSP上,使用window.open调用子JSP并提交子JSP,但无法在action类中提取子JSP的表单字段。看起来您缺少了一些内容。当您通过window.open()打开新的“JSP”时,您将在客户端上执行该操作。因此,当呈现子页面时,将调用子操作。由于此页面尚未由用户提交,您在子操作中未获得任何内容。看起来您的问题不在window.open中,而是在JSP本身中,所以Struts没有将POST参数设置为Action类?我可以将表单字段发布到Action类中,并在DB中进行mu更新。但问题是如何以及在何处关闭打开的窗口,因为表单提交后我不需要它。相反,表单提交后窗口应该自动关闭submitted@Sam:那就这样做吧在DB中更改发送JSP和JavaScript,通过调用
    window.close()
    为您关闭窗口。另外请注意,
    窗口.close
    仅在通过
    窗口.open
    打开的窗口中才能正常工作。因此,就你的情况而言,它符合你的需要,据我所知。