使用struts2迭代器或初始化arraylist

使用struts2迭代器或初始化arraylist,struts2,Struts2,我有一张单子。用户可以添加n个项目编号和说明 他将首先添加,然后要添加第二个,请按“添加更多”按钮 我调用action类,将数据存储在数组中,并重定向回页面以获取下一条记录 当我使用迭代器时,文本框再次被添加 如果我不使用迭代器,每次访问action类时,我的arraylist都会被初始化 我不能使它成为静态的。如果有人能帮助我不要每次初始化arraylist,或者使用迭代器,不要重复文本字段,这将很有帮助 <table> <tr align="center">

我有一张单子。用户可以添加n个项目编号和说明

他将首先添加,然后要添加第二个,请按“添加更多”按钮

我调用action类,将数据存储在数组中,并重定向回页面以获取下一条记录

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

如果我不使用迭代器,每次访问action类时,我的arraylist都会被初始化


我不能使它成为静态的。如果有人能帮助我不要每次初始化arraylist,或者使用迭代器,不要重复文本字段,这将很有帮助

<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()" />

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

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

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

如果我不写else部分,arraylist将正确递增,但arraylist中的详细信息不会持久化。


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

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

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

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

如果我不写else部分,arraylist将正确递增,但arraylist中的详细信息不会持久化。


因此,现在只显示所需的文本字段。

请格式化您的代码,并向我们显示您的操作。“使用迭代器,不要重复文本字段”我没有告诉您。根据我的理解,当用户添加新行时,会更新列表中的前一个值并将其显示出来,这有什么问题。请格式化您的代码并向我们显示您的操作。“使用迭代器,不要重复文本字段”我没有找到您。根据我的理解,当用户添加新行时,会更新列表中的上一个值并将其显示出来,这其中有什么问题。