【发布时间】:2014-03-25 15:04:31
【问题描述】:
我有这段代码:
final WebMarkupContainer container = new WebMarkupContainer("container");
container.setVisible(aBooleanValue);
container.setOutputMarkupId(true);
container.setOutputMarkupPlaceholderTag(true);
add(container);
final CheckBox hideContainer = new CheckBox("hideContainer", new PropertyModel<Boolean>(getModel(), "hideContainer"));
container.add(hideContainer);
hideContainer.add(new AjaxFormComponentUpdatingBehavior("onchange") {
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
if (Boolean.TRUE.equals(getModelObject().getHideContainer())) {
container.setVisible(false);
} else {
container.setVisible(true);
}
target.addComponent(MyForm.this.get("container"));
}
});
这会创建一个 WebMarkupContainer 和一个 Checkbox,如果复选框被选中,那么容器应该被隐藏,如果复选框没有被选中,那么容器应该是可见的。
但这不起作用......我做错了什么?
【问题讨论】:
-
您确认勾选时是否调用
onUpdate(AjaxRequestTarget target)? -
调用target.add(container); 应该足够了
-
对于复选框,您应该使用“点击”事件,在 IE 上“更改”将不会触发,直到复选框失去焦点。
-
使用“onchange”事件肯定会调用 onUpdate。我已经尝试使用“onclick”,但它也不起作用。关于IE,没关系,我们用火狐和我们webapp的用户。