我在数据库中有一个变量映射,我想在网页上显示详细信息,前端是struts2。 我试过这个
<html:iterator value="fields" id="field">
<html:textfield name="#field.value" key="#field.value" label="#field.key"/>
</html:iterator>
显然这不起作用,我怎样才能轻松获得Key Name所以我可以拥有这样的代码
想法是显示如下
Name: [ ]
Random: [ ]
Something: [ ]
作为表单中的文本字段...
我怎么能这么做?
答案 0 :(得分:5)
我不确定如何在<html:iterator>
中执行此操作,因为从未在struts2标记中看到过它没有遇到它。
将使用简单的<iteraor>
代码
假设我们有listmap
作为地图
<s:iterator value="listmap" status="stat">
<s:iterator>
<tr>
<th><s:property value="#stat.index"/></th>
<td><s:property value="key"/></td>
<td><s:property value="value"/></td>
</tr>
</s:iterator>
</s:iterator>
内部迭代器是上下文敏感的,它将使用压入堆栈的最后一个值。 status属性在每次迭代时为我们提供一个IteratorStatus对象,如果我们想知道当前的迭代,这对我们很有用。
答案 1 :(得分:2)
如果您有任意命名的值要发送回动作,则应使用基于地图的表单标记。请参阅collections文档。
<s:form ...>
<s:iterator value="fields" var="field">
<s:textfield name="sortingKey['%{#field.key}']" label="%{key}" value="%{value}" />
</s:iterator>
</s:form>
为动作中的地图提供一个getter / setter。
此外,如果您使用Struts 2.1+,则不推荐使用id
的{{1}}属性;应使用<s:iterator>
属性命名循环变量。
答案 2 :(得分:1)
前缀“html”是struts2的taglib?
如果你使用structs2的taglib,让我们使用前缀s:
你可以这样做
迭代map的键,然后按键访问该值。
<s:iterator value="#someMap.keys" var="key">
<s:textfield value="#someMap[key]" name="someMap[#key]"/>
</s:iterator>