我试图按如下方式隐藏标签:
Form form = new Form("form");
Label myLabel = new Label("myLabel", new ResourceModel("mylabel.text").getObject());
if(hide == true){
myLabel.setVisible(Boolean.FALSE);
}
form.add(myLabel);
..
但标签仍然出现。有谁知道为什么?
答案 0 :(得分:5)
您应该覆盖标签的isVisible方法。
Label label = new Label(...) {
@Override
public boolean isVisible() {
return !hide;
}
};
form.add(...)
...
答案 1 :(得分:0)
实际上你正在制作隐形标签,问题是重绘html页面,你可以刷新页面或借助ajax
答案 2 :(得分:0)
以下信息适用于Wicket 1.4(现已相当陈旧)。
对于Wicket 1.5和6.x(又名1.6),正确的方法是覆盖组件的onConfigure()
并从那里调用setVisible()
:
@Override
protected void onConfigure()
{
super.onConfigure();
boolean flag = myDbDAO.getVisibilityOfThisPanel()
this.setVisible(flag);
}
保持component.isVisible()
点亮,每个请求应该多次调用它,因此长计算任务会降低页面/面板加载速度。将繁重的流程(数据库,数学)放在onConfigure()
中,然后根据需要调用isVisible()
。