我有一个块级元素,一个容器,当隐藏它的子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