2011-10-20 46 views
0

使用s2迭代器標籤,我可以毫無問題地顯示錶格。我有兩個按鈕來添加行和刪除行的Javascript。下面是JSP頁面的代碼片段struts 2保存動態表格對象

<s:iterator value="entities" status="outerStat"> 
    <tr> 
    <TD><input type="checkbox" name="chk"/></TD> 
    <TD> 
     <table width="100%" cellspacing="4" cellpadding="0" border='0'> 
     <s:textfield name="entities[%{#outerStat.index}].entityName" value="%{entityName}"/> 
     </table> 
    </TD> 
    <TD> 
     <table width="100%" cellspacing="4" cellpadding="0" border='0'> 
     <s:select list="entityTypes" value="%{entityType}"/> 
     </table> 
    </TD> 
    <TD> 
     <table width="100%" cellspacing="4" cellpadding="0" border='0'> 
     <s:textarea name="entities[%{#outerStat.index}].sqlStmt" cols="120" rows="4" maxlength="4000" value="%{sqlStmt}"/> 
     </table> 
    </TD> 
    </tr> 
</s:iterator> 

我的問題是,每次我點擊AddRow按鈕,怎樣才能在服務器端該行一個對象持有?服務器端如何知道在cient端添加了多少行?

回答

0

正如你已經證明它,如單擊該按鈕的每一行不會創建服務器端對象。你正在創建一個表單 - 在提交表單之前,服務器端對象不會被創建/保留。如果您需要保證訂單,您需要爲「name」屬性的數組表示法保留一個JavaScript計數器。

可以創建的點擊通過調用Ajax,創建對象,並與項目的ID或任何一起返回HTML服務器端對象,但它不是從你的問題清楚,如果這就是你實際上想要做的。

+0

是的,你是對的Dave,我需要通過Ajax調用在點擊按鈕AddRow上創建服務器端對象。由於我是Ajax的新手,你是否有類似的代碼來完成這個任務? – user1006080

+0

我剛剛纔知道Spring提供了一個API來處理表中的動態行http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/util/AutoPopulatingList.html 任何人知道struts 2有類似的功能嗎? – user1006080

+0

@ user1006080我真的不知道那是什麼。 S2具有自動類型轉換功能,包括使用應用程序特定類型填充列表。 –