1

我不确定该标题的措辞是否正确。让我解释一下我正在尝试做的事情:

我有一个带有表单的文件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

它根据“应用程序”选择框中的选择显示许多文本字段。

更具体地说,一旦选择了一个应用程序,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被调用并显示来自 hashmap + text 字段的相关标签。(完毕)
  3. 当用户单击提交按钮时,用户在文本字段中的输入被保存到哈希图中(不起作用

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

从这个页面我可以很容易地从更大的动作类中访问数据,FormAction. CompAction但我不知道如何从(再次,ajax 操作的操作类)访问数据(例如哈希图)。

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

我的本能是使用

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

results.jsp没有运气。我对struts很陌生,但我正在尽我所能去感受它。有什么建议吗?

4

1 回答 1

1

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

好的,但是您还需要名称,我的意思是,您需要输入所有字段的操作名称-值。为此,首先,您应该更改您的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> 

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

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

于 2012-06-12T22:29:24.310 回答