在我的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