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

87
9

Поэтому у меня есть интересная проблема. У меня есть страница калитки, которая содержит datatable и fusionchart (flash chart), которая использует webresource для извлечения файла данных xml. Проблема в том, что когда вы используете номер страницы или сортировку ссылок в datatable, она перезагружает страницу и изменяет 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-адреса webresource, которые использует диаграмма из ссылочных ссылок? Я вижу, что проблема заключается в.1, который добавляется, если вы нажмете его несколько раз, он увеличивается на единицу, а изменение URL-адреса веб-ресурса совпадает. Что особенно странно, если я обновляю страницу после использования функций сортировки, вид остается в силе, но график (и правильный URL) возвращается. Я новичок в калитке, и я не могу найти много информации о том, как эта структура URL работает над этим... любые мысли?

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

Сэм

спросил(а) 2012-06-27T22:55:00+04:00 8 лет, 9 месяцев назад
1
Решение
75

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

Спасибо всем за то, что посмотрели! Сэм

ответил(а) 2012-07-03T06:02:00+04:00 8 лет, 9 месяцев назад
44

Я думаю, вы используете 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.

ответил(а) 2012-06-28T10:47:00+04:00 8 лет, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема