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添加一个示例代码段。