2011-06-14 31 views
1

以下是调用struts动作的Javascript函数调用,该动作又解析为jsp。在打开的Jsp页面在一个单独的窗口中,我有一个带有几个文本框的表单,然后下拉并提交按钮。当我提交填充表单时,我无法获取所有这些表单字段,但这些实例变量是在动作类中定义的。我在这里失踪?如何通过Javascript在新窗口中打开jsp时将表单参数传递给Action类

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

您不需要在Struts2中打开jsp页面。您(浏览器)打开一个映射到显示(通常)jsp的操作的url。我无法理解你在做什么。也许你应该包含一些涉及的模式(url,actions,jsp)。 – leonbloy 2011-06-14 17:35:22

+0

你应该在queston中给出子窗口的代码。你得到的错误是什么?你有没有试过Mark Guk的第二种选择? – anu 2011-06-15 06:19:58

回答

1

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

  1. POST数据到不同的动作,将它放到会话。然后打开窗户。 POST操作应通过AJAX完成,以避免不必重新加载页面。
  2. 将窗体字段中的数据添加到window.open第一个参数的URI的查询字符串中。然后,您可以在服务器上使用此数据来呈现新页面,或者仅将其发送到隐藏字段并在客户端上使用。
+0

我在使用window.open调用子JSP的父JSP上提交子jsp,但无法在动作类中提取子jsp的表单字段 – Sam 2011-06-15 05:32:52

+0

看起来像是缺少一些东西。当您通过window.open()打开新的“JSP”时,您可以在客户端上执行该操作。所以当子页面被渲染时,你得到了被调用的Child-Action。由于此页面并未由用户提交,因此您在Child-Action中没有任何内容。 看起来你的问题不在window.open中,但在JSP本身中,所以Struts没有将POST参数设置为Action类? – 2011-06-15 08:42:47

+0

我能够发表我的表单字段到动作类中,并在数据库中进行多次更新。但问题是如何以及在哪里可以关闭打开的窗口,因为表单提交后我不需要它。相反,窗口应该在表单提交后被自动锁定 – Sam 2011-06-15 17:20:06

0

您可以从表单字段中读取数据,并将它们作为请求参数追加到URL中。这样,参数应该在打开的窗口上可用。

相关问题