我不确定这个标题的措辞是否正确。让我解释一下我想做什么:
我有一个带有表单的新文件.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" />
<s:textfield name="value" value=""/> <!-- LINE I'M ASKING ABOUT -->
<s:iterator value="value">
<br>
</s:iterator>
我突出显示了文本字段行,因为我认为这是不正确的。基本上,我想做的是:
- 让用户从下拉列表中选择一个应用。(完成)
- 调用
comp.jsp
并显示每个哈希图+文本字段中的相关标签。(完成) - 当用户单击提交按钮时,用户在文本字段中的输入将保存到哈希图中(不起作用)
在这一点上,我应该提到,单击提交后,用户将被发送到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>
请注意,所有字段名称都以"_"开头。
然后,在操作中,您应该访问请求并获取请求中所有参数的列表,获取以"_"开头的参数,并自己使用其名称和值构建哈希图。