Как очистить ошибки, связанные с классом (формой), вызванные onValidate()?

В калитки 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). Я хотел бы передать аргумент processingEnabled перед onValidate или очистить все ошибки, связанные с этой формой, в методе onError. Спасибо за отзыв.


person lukaszrys    schedule 01.06.2015    source источник


Ответы (1)


Session.get().getFeedbackMessages() дает вам сообщения обратной связи только в сеансе, но поскольку сообщения обратной связи Wicket 6 хранятся вместе с их компонентами:

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

person svenmeier    schedule 02.06.2015