<form action="AddSub" method="post">
<table cellspacing="0" cellpadding="0" width="100%">
<tr>
<th class="h" style="width: 100%" colspan="4">
订阅名称<input type="text" name="sub.subname"/>
</th>
</tr>
<!-- 表 头 -->
<tr class="tr2">
<td style="width: 20%" align="center">
属性名称
</td>
<td style="width: 20%" align="center">
谓词
</td>
<td style="width: 20%" align="center">
属性值
</td>
<td style="width: 20%" align="center">
</td>
</tr>
<tr class="tr3">
<td><input name="subitems[0].attribute" value="卫星"/></td>
<td><input name="subitems[0].predicate" value="="/></td>
<td ><input name="subitems[0].value" /></td>
<td align="center"> </td>
</tr>
<tr class="tr3">
<td><input name="subitems[1].attribute" value="纬度"/></td>
<td><input name="subitems[1].predicate" value=">"/></td>
<td ><input type="text" name="subitems[1].value"/></td>
<td align="center"></td>
</tr>
<tr class="tr3">
<td><input name="subitems[2].attribute" value="纬度"/></td>
<td><input name="subitems[2].predicate" value="<"/></td>
<td ><input type="text" name="subitems[2].value"/></td>
<td align="center"></td>
</tr>
<tr class="tr3">
<td><input name="subitems[3].attribute" value="纬度"/></td>
<td><input name="subitems[3].predicate" value=">"/></td>
<td ><input type="text" name="subitems[3].value"/></td>
<td align="center"></td>
</tr>
<tr class="tr3">
<td><input name="subitems[4].attribute" value="经度"/></td>
<td><input name="subitems[4].predicate" value=">"/></td>
<td ><input type="text" name="subitems[4].value"/></td>
<td align="center"> </td>
</tr>
<tr class="tr3">
<td><input name="subitems[5].attribute" value="经度"/></td>
<td><input name="subitems[5].predicate" value="<"/></td>
<td ><input type="text" name="subitems[5].value"/></td>
<td align="center"></td>
</tr>
<tr>
<td><input type="submit" value="添加"/></td>
</tr>
</table>
</form>
代码如上,每一行提交的是一个对象,每一行的每个单元提交这个对象的一个属性,如何用struts2中的iterator标签实现,这样我就不用写那么多<tr>和<td>了。
11 个解决方案
#1
你首先的从后台List出结果集,然后在页面展现
<s:iterator value="list" id="a">
<tr class="tr2">
<td style="width: 20%" align="center">
<s:property value='a.属性名称'/>
</td>
<td style="width: 20%" align="center">
<s:property value='a.谓词'/>
</td>
<td style="width: 20%" align="center">
<s:property value='a.属性值'/>
</td>
<td style="width: 20%" align="center">
</td>
</tr>
</s:iterator>
<s:iterator value="list" id="a">
<tr class="tr2">
<td style="width: 20%" align="center">
<s:property value='a.属性名称'/>
</td>
<td style="width: 20%" align="center">
<s:property value='a.谓词'/>
</td>
<td style="width: 20%" align="center">
<s:property value='a.属性值'/>
</td>
<td style="width: 20%" align="center">
</td>
</tr>
</s:iterator>
#2
<s:iterator value="list" id="result">
<tr class="tr3">
<td><input name="subitems[0].attribute" value =<property value="#result.??"/>/></td>
<td><input name="subitems[0].predicate" value="="/></td>
<td ><input name="subitems[0].value" /></td>
<td align="center"> </td>
</tr>
</s:iterator>
如红色 那样 替换就OK乐
<tr class="tr3">
<td><input name="subitems[0].attribute" value =<property value="#result.??"/>/></td>
<td><input name="subitems[0].predicate" value="="/></td>
<td ><input name="subitems[0].value" /></td>
<td align="center"> </td>
</tr>
</s:iterator>
如红色 那样 替换就OK乐
#3
试过这样做,但是这样写的话页面上没有输入框,因为一开始list是空的?
#4
我现在是要提交数据啊,不是要展现出来
#5
我自己的看法:一般情况下,一个form对应一个action,一个action对应一个submit,你现在只有一个action,但有多个submit,所以我感觉有iterator标签难以实现。我是没有遇到过这种情况,如果lz解决了,记得给大家分享一下。
#6
在value里面使用OGNL表达式创建一个list 然后迭代就可以了
#7
写一个配置文件
AddSub-conversion.properties内容
Element_xxxList=bean
(bean为list中对象的完整名称)
此文件放AddSub.java同一目录下
AddSub-conversion.properties内容
Element_xxxList=bean
(bean为list中对象的完整名称)
此文件放AddSub.java同一目录下
#8
list在我的action里已经定义好了,action执行的时候list被放在valuestack里可以直接用,现在问题在于如何迭代,既把各个输入框显示出来,又让各个输入框与相应的属性对应起来。
#9
<s:form action="update" method="post" >
<s:iterator value="peopleList" status="stat">
<s:hidden
name="peopleList[%{#stat.index}].id"
value="%{peopleList[#stat.index].id}"/>
<s:textfield label="Name"
name="peopleList[%{#stat.index}].name"
value="%{peopleList[#stat.index].name}"/>
<s:textfield label="Age"
name="peopleList[%{#stat.index}].age"
value="%{peopleList[#stat.index].age}" />
<s:textfield label="Height"
name="peopleList[%{#stat.index}].height"
value="%{peopleList[#stat.index].height}"/>
<br/>
s:iterator>
<s:submit value="Update"/>
s:form>
我在网上搜索找到了上面的一段代码,但是用这种方法页面上是不现实输入框的,这个该怎么改呢
#10
你换成普通的html标签试试,也就是<input type="text" />这种。name和value取迭代列表元素的属性值。
#11
我也有类似的问题!
#1
你首先的从后台List出结果集,然后在页面展现
<s:iterator value="list" id="a">
<tr class="tr2">
<td style="width: 20%" align="center">
<s:property value='a.属性名称'/>
</td>
<td style="width: 20%" align="center">
<s:property value='a.谓词'/>
</td>
<td style="width: 20%" align="center">
<s:property value='a.属性值'/>
</td>
<td style="width: 20%" align="center">
</td>
</tr>
</s:iterator>
<s:iterator value="list" id="a">
<tr class="tr2">
<td style="width: 20%" align="center">
<s:property value='a.属性名称'/>
</td>
<td style="width: 20%" align="center">
<s:property value='a.谓词'/>
</td>
<td style="width: 20%" align="center">
<s:property value='a.属性值'/>
</td>
<td style="width: 20%" align="center">
</td>
</tr>
</s:iterator>
#2
<s:iterator value="list" id="result">
<tr class="tr3">
<td><input name="subitems[0].attribute" value =<property value="#result.??"/>/></td>
<td><input name="subitems[0].predicate" value="="/></td>
<td ><input name="subitems[0].value" /></td>
<td align="center"> </td>
</tr>
</s:iterator>
如红色 那样 替换就OK乐
<tr class="tr3">
<td><input name="subitems[0].attribute" value =<property value="#result.??"/>/></td>
<td><input name="subitems[0].predicate" value="="/></td>
<td ><input name="subitems[0].value" /></td>
<td align="center"> </td>
</tr>
</s:iterator>
如红色 那样 替换就OK乐
#3
试过这样做,但是这样写的话页面上没有输入框,因为一开始list是空的?
#4
我现在是要提交数据啊,不是要展现出来
#5
我自己的看法:一般情况下,一个form对应一个action,一个action对应一个submit,你现在只有一个action,但有多个submit,所以我感觉有iterator标签难以实现。我是没有遇到过这种情况,如果lz解决了,记得给大家分享一下。
#6
在value里面使用OGNL表达式创建一个list 然后迭代就可以了
#7
写一个配置文件
AddSub-conversion.properties内容
Element_xxxList=bean
(bean为list中对象的完整名称)
此文件放AddSub.java同一目录下
AddSub-conversion.properties内容
Element_xxxList=bean
(bean为list中对象的完整名称)
此文件放AddSub.java同一目录下
#8
list在我的action里已经定义好了,action执行的时候list被放在valuestack里可以直接用,现在问题在于如何迭代,既把各个输入框显示出来,又让各个输入框与相应的属性对应起来。
#9
<s:form action="update" method="post" >
<s:iterator value="peopleList" status="stat">
<s:hidden
name="peopleList[%{#stat.index}].id"
value="%{peopleList[#stat.index].id}"/>
<s:textfield label="Name"
name="peopleList[%{#stat.index}].name"
value="%{peopleList[#stat.index].name}"/>
<s:textfield label="Age"
name="peopleList[%{#stat.index}].age"
value="%{peopleList[#stat.index].age}" />
<s:textfield label="Height"
name="peopleList[%{#stat.index}].height"
value="%{peopleList[#stat.index].height}"/>
<br/>
s:iterator>
<s:submit value="Update"/>
s:form>
我在网上搜索找到了上面的一段代码,但是用这种方法页面上是不现实输入框的,这个该怎么改呢
#10
你换成普通的html标签试试,也就是<input type="text" />这种。name和value取迭代列表元素的属性值。
#11
我也有类似的问题!