2016-01-31 21 views
0

我有元素的列表,在模板中定義爲:檢票:動態地安排在列表中的元素

<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> 

我需要能夠分裂延胡索爲兩個列表,根據實際值 - 一些文字,其他人造成在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> 

在我能夠驗證的相應Java類中,添加了什麼值。我的想法是每個列表元素之間添加處理程序,像

<wicket:container wicket:id="split_1"> 
... 
<wicket:container wicket:id="split_2"> 

,並創建一個元素,這將使</dl><dl>,然後把它只有在我需要這種分裂。但是wicket對此進行了驗證,並且不允許我呈現該'無效'標記,除此之外該解決方案看起來很糟糕。

也許應該有一種方法來以編程方式創建兩個列表,然後遍歷它們來呈現?

+1

請添加示例代碼段用於需要產生的結果HTML。 –

回答

0

我同意在標記中保留兩個列表並將您的元素添加到適當的列表中會更好。製作一個小屏幕,其中包含<wicket:enclosure>中的重複標記。那麼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> 
+0

可能是一個好主意,謝謝,我會試着回去 – sab