多个AjaxCheckBox无法控制setEnabled。

问题描述 投票:0回答:1

我是一个使用Wicket框架的新手。

目前,我正在为Wicket框架设置 setEnabledTextField. 在我的情况下,我有两个 TextField 用来控制 AjaxCheckbox. 在我的审判中,我没有问题 setEnabled 首次 TextField但当我添加第二个 TextFieldAjaxCheckbox,第二种没有用,只有第一种。

是不是我漏掉了什么?

第一个

    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);
java wicket
1个回答
3
投票

检查你的HTML代码,并确保你使用不同的代码。id 的属性值 <input type="checkbox" .../>.

如果你有 id 属性,那么最好将其完全删除,让Wicket自动生成。根据HTML规范,id必须是唯一的。但Wicket在用Ajax发送HTML元素的值时,也会用它们来查找,我想当你点击第二个复选框时,Wicket会发送第一个复选框的状态,而第一个复选框是不会切换的。

© www.soinside.com 2019 - 2024. All rights reserved.