在小门1.4中,我曾经清除过以特定形式的onValidate()方法引起的错误。不幸的是,迁移到检票口6后,方法执行的顺序已更改,或者我的代码编写不正确。所以我有一个ajax按钮,类似于:

    final AjaxFallbackButton submitButton = new AjaxFallbackButton(PREFIX + ".submit", new I18nModel(title), panelForm) {

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            // submit method
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            addPanel.setProcessingEnabled(true);
        }
    };

    submitButton.add(new AjaxFormSubmitBehavior(panelForm, "onclick"){
        @Override
        protected void onEvent(AjaxRequestTarget target) {
            addPanel.setProcessingEnabled(false);
            super.onEvent(target);
        }
    });


addPanel指向包含要清除错误的表单的类。因此,在此类中,我将添加以下形式:

    panelForm = new Form<B>("panelForm", new PrefixedCompoundModel<B>(getDefaultModelObject(), PREFIX)) {
        @Override
        protected void onValidate() {
            super.onValidate();
           if (!processingEnabled) {
                Session.get().getFeedbackMessages().clear(new ContainerFeedbackMessageFilter(this));
            }
        }

        @Override
        protected void onError() {
            UiUtils.refresh(panelForm);
        }
    };


变量processingEnabled默认为true。我只是在单击上方的ajax按钮时才对其进行更改。它曾经先按照我的行为行事,然后以上面的形式进行onValidate。现在它去了:onValidate -> onError(panelForm) -> behavior -> onValidate -> onError(panelForm) -> onError(button)。我想在onValidate之前传递processingEnabled参数,或者在onError方法中清除与此表单相关的所有错误。感谢您的反馈。

最佳答案

Session.get()。getFeedbackMessages()仅向您提供会话中的反馈消息-但由于Wicket 6反馈消息与它们的组件一起存储:

https://cwiki.apache.org/confluence/display/WICKET/Migration+to+Wicket+6.0#MigrationtoWicket6.0-FeedbackStorageRefactoring

08-08 01:50