先贴代码<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="&gt"/></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="&lt"/></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="&gt"/></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="&gt"/></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="&lt"/></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>了。

解决方案 »

  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>
      

  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乐
      

  3.   


    试过这样做,但是这样写的话页面上没有输入框,因为一开始list是空的?
      

  4.   

    我自己的看法:一般情况下,一个form对应一个action,一个action对应一个submit,你现在只有一个action,但有多个submit,所以我感觉有iterator标签难以实现。我是没有遇到过这种情况,如果lz解决了,记得给大家分享一下。
      

  5.   

    在value里面使用OGNL表达式创建一个list  然后迭代就可以了 
      

  6.   

    写一个配置文件
    AddSub-conversion.properties内容
    Element_xxxList=bean
    (bean为list中对象的完整名称)此文件放AddSub.java同一目录下
      

  7.   


    list在我的action里已经定义好了,action执行的时候list被放在valuestack里可以直接用,现在问题在于如何迭代,既把各个输入框显示出来,又让各个输入框与相应的属性对应起来。
      

  8.   


    <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> 我在网上搜索找到了上面的一段代码,但是用这种方法页面上是不现实输入框的,这个该怎么改呢
      

  9.   


    你换成普通的html标签试试,也就是<input type="text" />这种。name和value取迭代列表元素的属性值。