【问题标题】:Wicket wantOnSelectionChangedNotifications changes input textfieldWicket wantOnSelectionChangedNotifications 更改输入文本字段
【发布时间】:2019-01-14 13:16:19
【问题描述】:

我在 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);
            }
        });

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

【问题讨论】:

    标签: java html wicket


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      看来offerTemplateFormModel.setTemplateName(...)又被调用了。

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

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

      【讨论】:

        猜你喜欢
        • 2023-01-19
        • 1970-01-01
        • 1970-01-01
        • 2017-08-29
        • 2012-07-30
        • 1970-01-01
        • 1970-01-01
        • 2023-02-10
        • 2019-10-31
        相关资源
        最近更新 更多