Wicket:在列表中动态排列元素
我有一个元素列表,在模板中定义为:Wicket:在列表中动态排列元素,wicket,Wicket,我有一个元素列表,在模板中定义为: <dl> <wicket:enclosure> <dt><wicket:message key="numberTitle" />:</dt> <dd wicket:id="objectNumber">1</dd> </wicke
<dl>
<wicket:enclosure>
<dt><wicket:message key="numberTitle" />:</dt>
<dd wicket:id="objectNumber">1</dd>
</wicket:enclosure>
...
<wicket:enclosure>
<dt><wicket:message key="nameTitle" />:</dt>
<dd wicket:id="objectName">2</dd>
</wicket:enclosure>
</dl>
:
1.
...
:
2.
我需要能够根据实际值将dl拆分为两个列表-一些文本,另一些导致EmptyPanel或自定义元素,如果为空,则该元素会隐藏自身。例如:
<dl>
<wicket:enclosure>
<dt><wicket:message key="numberTitle" />:</dt>
<dd wicket:id="objectNumber">1</dd>
</wicket:enclosure>
...
</dl>
<dl>
<wicket:enclosure>
<dt><wicket:message key="nameTitle" />:</dt>
<dd wicket:id="objectName">2</dd>
</wicket:enclosure>
</dl>
:
1.
...
:
2.
在相应的Java类中,我能够验证添加了哪些值。我的想法是在每个列表元素之间添加处理程序,如
<wicket:container wicket:id="split_1">
...
<wicket:container wicket:id="split_2">
...
并创建一个元素,它将呈现
,然后将其仅放在需要拆分的位置。但wicket对此执行验证,不允许我呈现“无效”标记,而且解决方案看起来很糟糕
也许有一种方法可以通过编程创建两个列表,然后在它们之间进行迭代以呈现?我同意最好将两个列表都保留在标记中,并将元素添加到相应的列表中。制作一个小面板,用于保存
中的重复标记。然后java看起来像这样:
RepeatingView list1 = new RepeatingView("list1");
add(list1);
RepeatingView list2 = new RepeatingView("list2");
add(list2);
for (Object a : listOfItems) {
if (shouldGoInFirstList(a))
list1.add(new MyPanel(list1.newChildId(), a);
else
list2.add(new MyPanel(list2.newChildId(), a);
}
HTML只是:
<dl>
<wicket:container wicket:id="list1"></wicket:container>
</dl>
<dl>
<wicket:container wicket:id="list2"></wicket:container>
</dl>
请为需要生成的结果HTML添加一个示例代码段。