我是一个使用Wicket框架的新手。
目前,我正在为Wicket框架设置 setEnabled
的 TextField
. 在我的情况下,我有两个 TextField
用来控制 AjaxCheckbox
. 在我的审判中,我没有问题 setEnabled
首次 TextField
但当我添加第二个 TextField
与 AjaxCheckbox
,第二种没有用,只有第一种。
是不是我漏掉了什么?
第一个
mobileNo = new TextField<String>("mobileNo", new PropertyModel<String>(getModelObject(), "mobileNo")) {
@Override
protected void onConfigure() {
setEnabled(mobileNoCheckBoxValue);
}
};
mobileNo.setOutputMarkupPlaceholderTag(true);
form.add(mobileNo);
AjaxCheckBox mobileNoCheckBox = new AjaxCheckBox("mobileNoCheckBox", new PropertyModel<Boolean>(this, "mobileNoCheckBoxValue")) {
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
target.add(mobileNo);
}
};
form.add(mobileNoCheckBox);
第二种
appliedAmount = new TextField<BigDecimal>("appliedAmount", new BigDecimalFormatProperty<BigDecimal>(getModel(), "appliedAmount")) {
@Override
protected void onConfigure() {
setEnabled(appliedAmountCheckBoxValue);
}
};
appliedAmount.setOutputMarkupPlaceholderTag(true);
form.add(appliedAmount);
AjaxCheckBox appliedAmountCheckBox = new AjaxCheckBox("appliedAmountCheckBox", new PropertyModel(this, "appliedAmountCheckBoxValue")) {
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
target.add(appliedAmount);
}
};
form.add(appliedAmountCheckBox);
检查你的HTML代码,并确保你使用不同的代码。id
的属性值 <input type="checkbox" .../>
.
如果你有 id
属性,那么最好将其完全删除,让Wicket自动生成。根据HTML规范,id必须是唯一的。但Wicket在用Ajax发送HTML元素的值时,也会用它们来查找,我想当你点击第二个复选框时,Wicket会发送第一个复选框的状态,而第一个复选框是不会切换的。