2012-10-03 16 views
1

我有一個列表。用戶可以添加n個項目編號和描述。使用struts2迭代器或初始化arraylist

他會先添加然後添加第二個會按添加更多按鈕。

我給一個行爲類的調用,存儲數組中的數據並重定向回頁面以獲取下一條記錄。

當我使用迭代器時,文本框再次被添加。

如果我不使用迭代器,我的數組列表每次訪問動作類時都會被初始化。

我不能使它成爲static.It將有幫助,如果任何人可以幫助我要麼不初始化arraylist每次或使用迭代器,而不是重複textfields。

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

請格式化您的代碼並向我們顯示您的操作。 –

+0

「使用迭代器,而不是重複文本字段」我沒有把你帶到這裏。根據我的理解,當用戶添加一個新行時,會更新列表中的前一個值,並將其顯示回來。 –

回答

1

感謝戴夫牛頓的編輯。 MohanaRao SV,我發現它的解決方案實際上是它的一個調整。我在上面的代碼中遇到的問題是:

當用戶第一次看到表單時,他會看到兩個文本字段。他將輸入詳細信息並添加另一條記錄,他將按添加按鈕。這一次ArrayList增加。所以表單上的文本字段將增加到四個。這是兩個較早的一個和新的兩個文本字段。依此類推...

因此,現在我所做的是在if條件中,我檢查索引是最後,我顯示的字段和其他部分我正在寫相同的代碼添加文本字段,但我已設置CSS屬性顯示:無。

如果我不寫其他部分arraylist是適當增加,但arraylist中的細節不會持久。

所以現在只顯示所需的文本字段。