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

时间:2012-06-12 20:44:40

标签: java ajax struts2 dojo

我不确定这个标题是否正确。让我解释一下我要做的事情:

我有一个带有表单

的文件 new.jsp
<s:form id="newdep" name="newdep" theme="simple" action="submitForm" >

在此表单中是一个选择框:

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

我正在使用Dojo进行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

根据“app”选择框中的选择显示多个文本字段。

更具体地说,一旦选择了某个应用,就会创建一个特定于该应用的哈希地图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. 调用
  3. comp.jsp并显示每个的hashmap + text字段的相关标签。 (完成)
  4. 当用户点击提交按钮(无效)时,用户在文本字段中的条目会保存到hashmap中
  5. 此时我应该提一下,点击提交后,用户会被发送到results.jsp

    通过此页面,我可以轻松访问较大的操作类FormAction中的数据。但我不知道如何从CompAction访问数据(例如hashmap)(再次,ajax操作的动作类)。

    所以,4。从results.jsp访问hashmap数据(也不起作用

    我的本​​能就是使用

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

    results.jsp但没有运气。我对struts很陌生,但我正努力让自己感觉良好。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

然后,在操作中,您应该访问请求并获取请求中所有参数的列表,以“_”开头的那些参数,并自己构建带有其名称和值的hashmap。