我有一個塊級元素,一個容器,當隱藏它的子Wicket元素(按鈕)時,應該隱藏它的所有全部。換句話說,如果任何子按鈕是可見的,容器應該是可見的。在隱藏其所有子組件時隱藏的Wicket容器
如果有按鈕的話,前面的按鈕總是可見的,所以我使用該按鈕來控制<wicket:enclosure>
的可見性,純粹在HTML端處理所有這些。
現在,規格已經改變,因此按鈕可以獨立隱藏/可見,所以簡單的外殼將不再工作(我認爲)。
我得到了它這樣的工作:
HTML:
<wicket:container wicket:id="downloadButtons">
<wicket:message key="download.foo.bar"/>:
<input type="button" wicket:id="excelDownloadButton" wicket:message="value:download.excel"/>
<input type="button" wicket:id="textDownloadButton" wicket:message="value:download.text"/>
<!-- etc ... -->
</wicket:container>
的Java:
WebMarkupContainer container = new WebMarkupContainer("downloadButtons");
// ... add buttons to container ...
boolean showContainer = false;
Iterator<? extends Component> it = container.iterator();
while (it.hasNext()) {
if (it.next().isVisible()) {
showContainer = true;
break;
}
}
addOrReplace(container.setVisible(showContainer));
但Java端現在是那種冗長和醜陋,我是思考有可能是一個更乾淨的方式來做同樣的事情。在那兒?你可以以某種方式「自動」隱藏一個容器(及其所有額外的標記),當它的子組件都不可見時?
(檢票1.4,如果它很重要。)
不錯;這種方法對我來說是新的,現在我已經在我們的代碼中實現了它,它也非常優雅。 (原始頁面大大簡化,這可以促進重用。) – Jonik 2012-08-01 11:02:45