如何将文本字段数据从 Struts 2 中的 ajax 操作传递到原始调用 .jsp?
Posted
技术标签:
【中文标题】如何将文本字段数据从 Struts 2 中的 ajax 操作传递到原始调用 .jsp?【英文标题】:How to pass textfield data from ajax action in Struts 2 to original calling .jsp? 【发布时间】:2012-06-12 20:44:39 【问题描述】:我不确定该标题的措辞是否正确。让我解释一下我要做什么:
我有一个带有表单的文件 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=""/>
这会通过操作showComp
即时调用comp.jsp
。
它会根据“app”选择框中的选择显示许多文本字段。
更具体地说,一旦选择了一个应用程序,就会创建一个特定于该应用程序的哈希图 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
被调用并显示来自 hashmap + 文本字段的相关标签。 (完成)
当用户单击提交按钮时,用户在文本字段中的输入会保存到 hashmap 中(不起作用)
此时我应该提一下,点击提交后,用户会被发送到results.jsp
。
从这个页面我可以很容易地访问更大的动作类的数据,FormAction
。但我不知道如何从CompAction
访问数据(例如哈希图)(再次,ajax 动作的动作类)。
所以,4. 从 results.jsp 访问 hashmap 数据(也不起作用)
我的本能是使用
<s:property value="%lstList" />
在results.jsp
但没有运气。我对struts很陌生,但我正在尽我所能去感受它。有什么建议吗?
【问题讨论】:
【参考方案1】:我不确定我是否得到了你,但我会尽力提供帮助。查看您的comp.jsp
,特别是您突出显示的行,看起来您正在创建许多具有相同名称的输入:“值”(因为在<s:textfield />
中,“值”不是作为变量,而是作为一个简单的名称),每个哈希图条目一个。我建议你看一下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>
请注意,所有字段名称都以“_”开头。
然后,在操作中,您应该访问请求并获取请求中所有参数的列表,获取以“_”开头的参数,并自己构建带有名称和值的 hashmap。
【讨论】:
以上是关于如何将文本字段数据从 Struts 2 中的 ajax 操作传递到原始调用 .jsp?的主要内容,如果未能解决你的问题,请参考以下文章
如何从另一种方法访问 tableviewCell 中的文本字段
当用户以编程方式单击swift ios中的删除按钮时,如何将光标从一个文本字段自动移动到另一个文本字段?