2013-07-05 167 views
0

我米具有很難與陣列輸入工作例如如何可以I: 彈簧MVC形式輸入

<input name="phone []"/> <input name="phone[]"/>

  1. 使用彈簧形式標籤寫入以下HTML輸入我試過 <form:input path="phone []"/> 但沒有運氣會拋出錯誤,說類屬性phone []不存在。

    2。在告訴我如何執行步驟1後,如何使用@ModelAttribute重新填充用戶輸入值的表單如果出現驗證錯誤。顯然正常使用<spring:input path="phone"/>將無法​​正常工作,因爲手機有一個值列表。

    順便說一下,我使用控制器的註釋。

    謝謝

回答

2

這取決於你是否試圖做動態表單或只是一個基於靜態列表的表單。對於靜態的 - 你需要手動循環:

<c:forEach items="myModel.phones" varStatus="status"> 
    <form:input path="phones[${status.index}]" /> 
</c:forEach> 

動態形式是有點複雜,你應該嘗試谷歌,因爲這是自問自答幾次。

+0

因此,例如,如果我有兩個手機輸入,在我的ModelClass我需要'列表電話; '然後在列表中添加兩個空值以使foreach迭代工作? 'phones.add(「」)和phones.add()? ,是不是有更好的方法來初始化myModel.phones? – Catalin

+1

如果您有一組預定義的元素 - <',則不需要初始化列表。 Spring將處理不存在的列表條目。用一些表達式語言,你甚至可以做更高級的條件'end =「$ {myModel.phones.size()<2?2:myModel.phones.size()}」'。如果你想得到真正先進的,你可能需要使用地圖,而不是列表。 –

+0

你可以在這裏查看我的答案動態表單 - http://stackoverflow.com/questions/17002027/auto-populating-set/17007161#17007161。我不認爲這是最好的方法,但我使用這種方法很多。但正如我寫的,這比簡單的List方法稍微複雜一些。 –