Wicket 1.5 Wicket:在显式禁用整个面板时启用面板组件

Wicket 1.5 Wicket:在显式禁用整个面板时启用面板组件,wicket-1.5,Wicket 1.5,目前我有一个面板,比如说我有10个文本字段和10个下拉列表。我想禁用面板中除1个文本字段之外的所有组件。目前,我所做的是为面板中的所有组件调用setenabled false,并仅为1个组件调用setenabled true。与其这样做,我更愿意禁用整个面板,只启用该面板中的一个特定组件。但这是行不通的。在wicket有可能吗?有人能帮忙吗?查看此界面:IVisitor 然后像这样使用: setEnabled(false, textfield1, textfield2, dropdown1, d

目前我有一个面板,比如说我有10个文本字段和10个下拉列表。我想禁用面板中除1个文本字段之外的所有组件。目前,我所做的是为面板中的所有组件调用setenabled false,并仅为1个组件调用setenabled true。与其这样做,我更愿意禁用整个面板,只启用该面板中的一个特定组件。但这是行不通的。在wicket有可能吗?有人能帮忙吗?

查看此界面:IVisitor

然后像这样使用:

setEnabled(false, textfield1, textfield2, dropdown1, dropdown2);

禁用面板并覆盖异常组件的isEnabled函数以返回true/使用链接时,请同时覆盖受保护的布尔值IsLink Enabled和公共布尔值canCallListenerInterfaceMethod方法/ 当你有了它,尝试一下,如果你得到ListenerInvocationNotAllowedException,然后检查是什么导致它。这本日志写得很好。您可能还会遇到其他异常,请尝试调试它们,但我相信所有异常都是可以解决的。 我的答案基于Wicket 1.6的概念验证,但也可能是1.5的解决方案

我的特殊组件是一个下载链接。下面是一个例子:

DownloadLink documentLink = new DownloadLink("documentLink", getFileModel(question), new PropertyModel<String>(getDefaultModelObject(), "answer.documentName")){
        @Override
        public boolean isEnabled() {
            return true;
        }

        @Override
        protected boolean isLinkEnabled() {
            return true;
        }

        @Override
        public boolean canCallListenerInterface(Method method) {
            return true;
        }
    };

禁用面板并覆盖异常组件的isEnabled函数以返回true对于面板i wicket 6.18和6.24中的一个复选框不起作用您使用了哪个复选框实现?因为复选框是一个接口。复选框是一个类:
setEnabled(false, textfield1, textfield2, dropdown1, dropdown2);
DownloadLink documentLink = new DownloadLink("documentLink", getFileModel(question), new PropertyModel<String>(getDefaultModelObject(), "answer.documentName")){
        @Override
        public boolean isEnabled() {
            return true;
        }

        @Override
        protected boolean isLinkEnabled() {
            return true;
        }

        @Override
        public boolean canCallListenerInterface(Method method) {
            return true;
        }
    };