Wicket - обратный вызов SetResponsePage не запускается - PullRequest
2 голосов
/ 05 июля 2011

Я пишу свое первое приложение для калитки и столкнулся с моим первым блокпостом сегодня. Здесь проблема. У меня есть страница, которая содержит AjaxSubmitLink. В событии onSubmit я загружаю панель, используя setResponsePage.

С домашней страницы моего приложения я могу перейти к вышеупомянутой странице двумя способами - либо по гиперссылке, либо путем переключения вкладки (используйте базовый ITab из расширений wicket), оба из которых вызывают один и тот же конструктор с идентичные аргументы.

Теперь, если я перехожу на страницу по гиперссылке, все работает нормально. Однако, если я использую вкладку для перехода на страницу, AjaxSubmitLink не загружает панель. Идет запрос Ajax, я вижу, что сервер его обрабатывает, но, похоже, обратный вызов не выполняется.

Еще одна странная вещь, которую я заметил, в последнем случае firebug не регистрирует мои Ajax-запросы на консоли. Он отлично регистрирует запросы в первом случае.

Я немного озадачен, какие-нибудь намеки, указатели или толчки?

Редактировать: код объявления ссылки.

 editLink = new AjaxSubmitLink("editLink") {
            @Override
            protected void onSubmit(AjaxRequestTarget target, Form<?> masterForm) {
                    setResponsePage(new EditPage(programId));
            }
        };

Редактировать: я проверил запросы, сделанные с помощью fiddler, неудачные вызовы Ajax возвращают 302 вместо 200.

ОБНОВЛЕНИЕ:

Я вроде нашел обходной путь. Информация о скрипаче привела меня к поиску поведения setResponsePage, которое привело меня к https://issues.apache.org/jira/browse/WICKET-1703.

В любом случае, поскольку мне не требовался POST-запрос для ссылки, вместо этого использовался GET, чтобы получить желаемое поведение.

Интересная находка с использованием fiddler: тип содержимого отправленного запроса - multipart / form-data, а не application / x-www-form-urlencoded в ошибочном случае.

Я все еще не совсем понимаю актуальную проблему, благодарю за любые объяснения.

1 Ответ

0 голосов
/ 04 июня 2012

setResponsePage() вместо этого должен получить файл .class или экземпляр класса.как

NextPage np = new NextPage(int a,int b);
....
setResponsePage(np);

или

setResponsePage(NextPage.class);
...