1

我有一个清单。用户可以添加 n 个项目编号和描述。

他将首先添加,然后添加第二个将按添加更多按钮。

我正在调用将数据存储在数组中的操作类并重定向回页面以获取下一条记录。

当我使用迭代器时,文本框会再次添加。

如果我不使用迭代器,我的数组列表每次访问动作类时都会被初始化。

我不能让它成为静态的。如果有人可以帮助我不每次都初始化数组列表或使用迭代器而不重复文本字段,这将很有帮助。

<table>
  <tr align="center">
    <s:iterator value="preAdviceDetailsDO" id="preAdviceDetailsDO" status="outerStat">
      <s:if test="#outerStat.may be some useful word like even odd first == true">
        <td style="background: #CCCCCC">
          <s:textfield value="%{itemNumber}" name="preAdviceDetailsDO[%{#outerStat.index}].itemNumber" onblur="checkBarcode();"/>
        </td>

        <td style="background: #CCCCCC">
          <s:textfield value="%{itemDescription}" name="preAdviceDetailsDO[%{#outerStat.index}].itemDescription"/>
        </td>
      </s:if>
    </s:iterator>
  </tr>     
</table>
<input type="button" value="Add More" onclick="addRow()" />
4

1 回答 1

1

感谢戴夫牛顿编辑。MohanaRao SV,我发现它的解决方案实际上是一个调整。我在上面的代码中面临的问题是:

当用户第一次看到表单时,他会看到两个文本字段。他将输入详细信息并添加另一条记录他将按下添加按钮。这次增加了arraylist。所以表单上的文本字段将增加到四个。这是两个较早的一个和新的两个文本字段。依此类推......

所以现在我所做的是在 if 条件下我正在检查索引是否是最后一个然后我正在显示字段,在其他部分我正在编写相同的代码来添加文本字段,但我已经设置了 css 属性 display:none。

如果我不写 else 部分,arraylist 会正确递增,但不会保留 arraylist 中的详细信息。

所以现在只显示所需的文本字段。

于 2012-10-05T06:11:49.153 回答