Мы используем Primfaces 3.0.RC2 в нашем приложении со строками и CDI. Мы следовали реализации ленивой загруженной таблицы данных в витрине компонентов. Поскольку у нас есть большой набор данных, мы переопределили метод load(), чтобы получить только результаты с помощью страницы. (одновременно загружая все записи в память).Основные шрифты - Пользовательская разбивка на страницы/Сортировка нагрузки() issue
Пагинация работает как и ожидалось, однако сортировка не выполняется. Записи сортируются правильно при первом щелчке заголовка столбца. Для всех последующих кликов метод load() вызывается дважды, отправляя разные значения для порядка сортировки, в результате чего порядок сортировки остается неизменным в таблице. Кажется, что вызовы load() выполняются на этапе APPLY_REQUEST_VALUES.
Может ли кто-либо предоставить какие-либо сведения о том, почему это происходит и как этого можно избежать. Любые указатели будут высоко оценены.
Дополнительная информация: Как уже говорилось ранее, мы переопределили метод load() и попросили БД выполнить выборку отсортированных результатов по странице (путем указания максимальных результатов и порядка в запросе), и он отлично работает.
@Override
public List<ABC> load(int first, int pageSize, String sortField, SortOrder
sortOrder, Map<String, String> filters)
{
// Fetch data pagewise from the database
datasource = dao.findPagewiseSortedResults(sortField,
SortOrder.ASCENDING == sortOrder ? true : false, first, pageSize);
// Set the row count
this.setRowCount((int) dao.findTotalCount());
return datasource;
}
Однако при нажатии столбца на datamodel для сортировки создаются 2 почтовых запроса.
Поиск ниже код Xhtml:
<p:dataTable id="dataTable" var="record"
value="#{testBean.lazyModel}" paginator="true" rows="5"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
selectionMode="single" selection="#{testBean.selectedRecord}"
sortBy="#{record.username}">
<p:ajax event="rowSelect" listener="#{testBean.onRowSelect}"
update=":form:display" oncomplete="accountDialog.show()" />
<p:ajax event="colResize" update=":form:growl"
listener="#{testBean.onResize}" />
<p:column sortBy="#{record.username}"
filterBy="#{record.username}">
<f:facet name="header">
<h:outputText value="User Name" />
</f:facet>
<h:outputText value="#{record.username}" />
</p:column>.........
</dataTable>
Мы даже обновлен до последней версии Primefaces (3.0.1), но это не помогло. Мы что-то упускаем? Любые указатели будут очень полезны.
Спасибо.
Я использую 3.0 Final с Lazy Loading, filterin g и сортировки, но не вижу этого. Даже если в нем присутствует такая ошибка (но это не так), вы всегда можете прочитать поле sortOrder и действовать соответственно. Может быть, лучше, если вы разместите код – perissf
@ perissf, спасибо за ответ. Я добавил код в исходный вопрос. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация/ – gkari