【发布时间】:2014-10-14 20:16:46
【问题描述】:
我正在使用检票口框架。
有谁知道如何通过单击复选框组件来控制表单中组件的可见性,以及如何在提交表单时获取复选框状态的布尔值(真或假,取决于选中与否)。
我想做这样的事情:
TextField nameField = new TextField("name");
public StateDB() {
final AjaxCheckBox searchByFio = new AjaxCheckBox("searchByFio", new PropertyModel(this, "checkBoxValue")) {
@Override
protected void onUpdate(AjaxRequestTarget target) {
nameField.setVisible(checkBoxValue);
target.add(nameField);
}
};
Form form = new Form("form");
nameField.setOutputMarkupPlaceholderTag ( true );
form.add(nameField);
add(form);
}
但结果不是我所期望的。它只是像这样更改 html 元素
来自:
<input type="text" wicket:id="lastName" id="lastName" required="" value="" name="lastName">
致:
<input id="lastName" style="display:none">
反之亦然
【问题讨论】:
-
我错了,wicket 只是改变了组件的样式。但是使用这种样式的用户无法在页面上看到您的文本字段。这是隐藏组件的正常行为。 Wicket 必须知道你的对象下次必须出现在哪里,所以它只是改变它的样式。但是如果你真的想出于某种原因删除输入,那么你必须用 WebMarkupContiner 包装它或用另一个组件替换它,比如 EmptyPanel。如果你愿意,我可以教你怎么做。
-
是的,如果您展示如何使用 WebMarkupContiner 包装器,那就太好了。我还没有将我想通过复选框控制其可见性的组件分离到另一种形式。并控制该表单的可见性。但我认为这是错误的方式
-
已更新我的答案。
标签: java checkbox components wicket form-submit