我用的是wicket 8.10。
我有一个wicket组件,我想根据一些外部条件动态隐藏或显示它。为此,我有以下代码:
var mccc = new MyCoolCustomComponent("component"); // Custom component I wrote
mccc.setOutputMarkupId(true);
mccc.setOutputMarkupPlaceholderTag(true);
mccc.setVisible(false); //Should be hidden initially
var container = new WebMarkupContainer("container");
container.setOutputMarkupId(true);
container.setOutputMarkupPlaceholderTag(true);
container.add(mccc);
add(container);
var updateTimer = new AbstractAjaxTimerBehavior(Duration.seconds(1)) {
@Override
protected void onTimer(AjaxRequestTarget target) {
if(FooSingleton.instance().isBar()) {
mccc.setVisible(true);
} else {
mccc.setVisible(false);
}
target.add(mccc);
}
};
container.add(updateTimer);
相应的html如下所示:
<div wicket:id="container" >
<div wicket:id="component"/>
</div>
我希望发生的是:组件最初是隐藏的。什么时候 isBar()
返回 true
组件将显示出来,一旦返回 false
它再次被隐藏。
实际发生的情况:组件最初是隐藏的。它只显示一次 isBar()
变成 true
但一次也看不见 isBar()
返回 false
.
我还考虑过使用 AttributeModifier
使用css display
属性,但我找不到如何更改修改器的值。
1条答案
按热度按时间o4hqfura1#
我用css解决了这个问题:
我相信这个解决方案不是很好,但它现在起作用了。