Wicket Datatable ссылки сортировки, изменяющие URL для WebResources

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

Например, перед использованием сортировочных ссылок (этот URL данных работает для диаграммы) vreports / wicket: interface /: 5: tabs: panel: prodGraph:: IResourceListener:: (это URL для базовой страницы: /vreports.5)

После использования ссылок сортировки (этот URL-адрес данных не работает) vreports / wicket: interface /: 5: tabs: panel: prodGraph: 1: IResourceListener:: (url базовой страницы: /verports.5.1)

У меня вопрос: как я могу изолировать URL-адреса веб-ресурсов, которые использует диаграмма, от ссылок с данными? Я вижу, что проблема заключается в том, что добавляется.1, если щелкнуть его несколько раз, он увеличивается на единицу, а изменение URL-адреса веб-ресурса совпадает. Что особенно странно, если я обновляю страницу после использования функций сортировки, сортировка остается в силе, но диаграмма (и правильный URL) возвращаются. Я новичок в калитке, и я не могу найти много информации о том, как работает его структура URL относительно этого... какие-нибудь мысли?

Заранее спасибо!

Сэм

2 ответа

Решение

В итоге я преобразовал свой datatable в AjaxDefaultFallbackDataTable, и у меня все разбиение на страницы и сортировка выполнены в Ajax, поэтому URL-адреса не меняются, потому что страница не обновляется. AjaxDefaultFallbackDataTable использует тот же DataProvider, что и DataTable, он просто обрабатывает все в AJAX, поэтому он может быть простой / предпочтительной альтернативой для любого с такой же проблемой. Буквально все, что мне нужно было изменить, было везде, где у меня был DataTable, я переключил его на AjaxDefaultFallbackDataTable, и он прекрасно работает!

Спасибо всем за внимание! Сэм

Я думаю, что вы используете OrederBYBorder для сортировки.

Попробуй это

this.add(новый AjaxFallbackOrderByBorder(id,fieldName, issueSortable) {

                private static final long serialVersionUID = 1L;
                @Override
                protected void onSortChanged() {
                    dataView.setCurrentPage(0);
                }
                protected void onAjaxClick(AjaxRequestTarget target) {
                    target.addComponent(componentName);
                }
   }); 

Также используйте BookmarkablePageLink для перехода на эту страницу или StatelessLink означает использование этих ссылок для перехода на страницу fusionchart.

Другие вопросы по тегам