<table>
<tr>
<td>
<div wicket:id="id1">
<div wicket:id="draggable" />
</div>
</td>
<td>
<div wicket:id="id2">
<div wicket:id="draggable"/>
</div>
</td>
</tr>
</table>
考虑上面的标记,并且在java部分我对以下内容很相似..
WebMarkupContainer con1 = new WebMarkupContainer("id1");
WebMarkupContainer con2 = new WebMarkupContainer("id2");
Draggable draggable = new Draggable<Void>("draggable");
con1.add(draggable)
con2.add(draggable)
但是当我浏览页面时,我得到了一个Wicket异常,声明“con1”没有“draggable”。
我错过了什么吗?还是从根本上说错了?我知道不可能在同一个父级下添加相同的标记。是否有任何类似的正确方法来实现这一目标?
此外,我的目标是创建一个Draggable组件,一次拖动两个项目。
答案 0 :(得分:2)
将具有父项的子组件添加到另一个父组件将从第一个父组件中删除它并将其添加到第二个父组件。因此例外。
您需要创建两个单独的Draggable实例。
通常可以使用Wicket Behavior实现可拖动行为。您可以通过这种方式重用非Ajax行为,即您可以将同一实例添加到多个组件中。