首页 > 解决方案 > 多个 AjaxCheckBox 无法控制 setEnabled

问题描述

我是使用 Wicket 框架的新手。

目前我正在努力设置setEnabled. TextField就我而言,我有两个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);

标签: javawicket

解决方案


检查您的 HTML 代码并确保id<input type="checkbox" .../>.

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


推荐阅读