Wicket wantOnSelectionChangedNotifications 更改输入文本字段

Wicket wantOnSelectionChangedNotifications changes input textfield

我在 wicket 中有一个简单的表单,有一个带有模板名称和几个复选框的字段,以及覆盖的 onSelectionChange 方法。当我从页面参数

中将一些文本放入文本字​​段时
@Override
            protected void onInitialize() {
                super.onInitialize();
                if (PageParameters.get("templateName").toString() != null) {
                    OfferTemplate offerTemplate = huskyService.getTemplate(PageParameters.get("templateName").toString());

                    offerTemplateFormModel.setTemplateName(offerTemplate.getTemplateName());

然后我标记复选框

add(new CheckBox("htmlCheckbox",  new Model<Boolean>(Boolean.TRUE)) {
            protected boolean wantOnSelectionChangedNotifications() {
                return true;
            }

            @Override
            protected void onSelectionChanged(Boolean newSelection) {
                super.onSelectionChanged(newSelection);
                isHtmlVisible = !isHtmlVisible;
                htmlTemplate.setRequired(isHtmlVisible);
                offerTemplateFormModel.setHtmlCheckbox(isHtmlVisible);
                htmlDiv.setVisible(isHtmlVisible);
            }
        });

它会自动在我的输入字段中添加单词。例如它是 "hey" 然后点击后它将是 "hey;hey" 等等。 也许有人可以帮忙?

好像又调用了offerTemplateFormModel.setTemplateName(...)

这很奇怪,因为 onInitialize() 在 Page/Component 的生命周期中只被调用一次。如果您使用的是 onConfigure() 那么观察到的是正常行为。

如果页面是无状态的,则会为每个请求创建一个新实例,然后请求参数中的值很可能会累积旧值。

我假设您输入的名称是 "templateName"?在这种情况下,当 wantOnSelectionChangedNotifications 触发请求时,该参数将被发送两次。

请为您的输入指定一个不同于页面参数的名称。