如何将文本字段数据从 Struts 2 中的 ajax 操作传递到原始调用.jsp



我不确定这个标题的措辞是否正确。让我解释一下我想做什么:

我有一个带有表单的新文件.jsp

<s:form id="newdep" name="newdep" theme="simple" action="submitForm" >

此表单中有一个选择框:

<s:select list="apps" name="app" onchange="javascript:show_details();return false;" />

我正在使用 Dojo for ajax,它调用:

function show_details() {
    dojo.event.topic.publish("show_detail");
}

同样在此表格中,我有:

<s:url id="d_url" action="showComp" /> 
<sx:div id="details" href="%{d_url}" listenTopics="show_detail" formId="newdep" showLoadingText=""/>

这需要comp.jsp通过动作showComp即时进行。

它根据在"应用程序"选择框中所做的选择显示许多文本字段。

更具体地说,选择应用程序后,将创建特定于该应用程序的哈希映射lstList(在 CompAction 内 - showComp 的操作类),并如下所示:

<s:iterator value="lstList">   
  <s:property value="key" />   
  &nbsp;&nbsp;&nbsp;
  <s:textfield name="value" value=""/> <!-- LINE I'M ASKING ABOUT -->
  <s:iterator value="value">     
    <br> 
  </s:iterator> 

我突出显示了文本字段行,因为我认为这是不正确的。基本上,我想做的是:

  1. 让用户从下拉列表中选择一个应用。(完成)
  2. 调用comp.jsp并显示每个哈希图+文本字段中的相关标签。(完成)
  3. 当用户单击提交按钮时,用户在文本字段中的输入将保存到哈希图中(不起作用

在这一点上,我应该提到,单击提交后,用户将被发送到results.jsp

在此页面中,我可以轻松访问来自较大操作类的数据,FormAction .但是我不知道如何从CompAction(再次,ajax 操作的操作类)访问数据(例如哈希映射)。

所以,4.从结果访问哈希图数据.jsp(也不起作用

我的自然本能是使用

<s:property value="%{lstList}" /> 

results.jsp但没有运气。我对支柱很陌生,但我正在尽最大努力对它有一个很好的感觉。有什么建议吗?

我不确定我是否得到了你,但我会尽力提供帮助。看看你的comp.jsp,特别是你突出显示的那行,看起来你正在创建许多同名的输入:"value"(因为<s:textfield />"value"不是充当变量,而是作为一个简单的名称),每个哈希图条目一个。我建议您查看comp.jsp生成的HTML代码。也就是说,如果有许多同名字段,则这些字段的所有值都将在操作中映射为String[]。因此,如果您在操作中定义String[],您将获得所有值。

好的,但是您还需要名称,我的意思是,您需要为所有字段输入操作名称值。为此,首先,您应该更改comp.jsp,忘记<s:textfield .../>,并由您的 html 代码生成

<s:iterator value="lstList">   
    <input type="text" name="_<s:property value="key" />" value="<s:property value="value" />" />    
    <br> 
</s:iterator> 

请注意,所有字段名称都以"_"开头。

然后,在操作中,您应该访问请求并获取请求中所有参数的列表,获取以"_"开头的参数,并自己使用其名称和值构建哈希图。

最新更新