在我的Web應用程序中,我有許多帶有組件列表的表單,用戶可以動態地添加/刪除這些組件。例如,在輸入有關自己的信息時,用戶可能會添加包含其子女姓名的多個文本字段。每個組件都有一個刪除鏈接,並且還有添加鏈接以添加新組件。 的標記看起來是這樣的:Wicket - 帶添加/刪除功能的表單組件列表
<div>
<div wicket:id="rows">
<input type="text" wicket:id="name"/>
<a wicket:id="remove">Remove</a>
</div>
<a wicket:id="add">Add</a>
</div>
中行是一個檢票口轉發。
輸入組件因列表而異(可能是下拉列表或其他內容,可能會添加不同的驗證程序,等等),但鏈接保持不變。他們的標記和邏輯不會改變。 因爲我的表單中有很多這樣的列表,所以我有makup和代碼重複。 我想有是讓我輸入組件的標記的形式,而擺脫這些鏈接的,是這樣的:
<div wicket:id="dynamicList">
<input type="text" wicket:id="name"/>
</div>
這將被渲染爲具有附加文本字段列表/刪除鏈接。
我知道我必須有鏈接的標記,比如自動生成或將它們放在面板或其他東西中,我只是不想每次都複製它們。
UPD: 下面是建議的解決方案的標記使用Border組件(沒有工作): ListBorder.html:
<wicket:border>
<div wicket:id="rows">
<wicket:body/>
<a wicket:id="remove">Remove</a>
</div>
<a wicket:id="add">Add</a>
</wicket:border>
MyForm.html:
<form wicket:id="form">
...
<div wicket:id="dynamicList">
<input type="text" wicket:id="name"/>
</div>
...
</form>
你能提供你的添加/刪除鏈接如何工作的片段嗎?另外,你使用的是中繼器? – WiseTree
我正在使用基於Wicket in Action [blog](http://wicketinaction.com/2008/10/building-a-listeditor-form-component/)中的示例的RepeatingView,其中還介紹了這些鏈接的工作原理。但我認爲這更多關於如何安排標記... – koszek