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.