Wicket бесконечная перезагрузка страницы при использовании ленивых загрузочных панелей - PullRequest
0 голосов
/ 10 октября 2019

У меня есть страница Wicket, которая создает в конструкторе только ListView. Эти элементы представления списка являются только компонентами, присутствующими на странице.

Для загрузки этих компонентов я использую AsynchronousUpdatePanel из сторонней библиотеки: https://gist.github.com/jonnywray/594468

Я хочу использовать асинхронную панель, потому что некоторые компонентызагружаются 300 мс, но примерно 10 секунд.

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

Когда начинается бесконечный цикл, StalePageException выдается снова и снова, что запускает перезагрузку страницы. Тогда консоль приложения полна этих:

WARN RequestCycleExtra - ********************************
WARN RequestCycleExtra - Handling the following exception
org.apache.wicket.core.request.mapper.StalePageException: A request to page '[Page class = *.*Page, id = 1, render count = 2]' has been made with stale 'renderCount'. The page will be re-rendered.
WARN RequestCycleExtra - ********************************

Не могу найти, что я делаю не так. Компоненты, которые загружаются, имеют модели, которые загружаются в поток Callable в фоновом режиме через AsynchronousUpdatePanel, а затем вызывается метод onPostSuccess, и в этом методе я заменяю индикатор отложенного запуска на моей панели (компоненте), которая теперь имеет загруженную модель.

Спасибо за любой ответ.

1 Ответ

1 голос
/ 10 октября 2019

Вы должны создать быстрый старт и попросить помощи в списке рассылки Wicket. Без отладки трудно найти причину проблемы.

Обратите внимание, что AsynchronousUpdatePanel / FutureUpdateBehavior, по-видимому, нарушает некоторые принципы Wicket (например, временные несериализуемые поля "future").

Более того, начиная с Wicket8 AjaxLazyLoadPanel поддерживает параллельную асинхронную отложенную загрузку, возможно, вы захотите попробовать это вместо этого.

...