У меня есть таблица данных с переменным количеством столбцов и скроллер данных. Как включить сортировку на стороне сервера? Я предпочитаю, чтобы его запускал пользователь, щелкнув заголовок столбца.
<rich:datascroller for = "instanceList" actionListener = "#{pageDataModel.pageChange}"/>
<rich:dataTable id = "instanceList" rows = "10" value = "#{pageDataModel}"
var = "fieldValues" rowKeyVar = "rowKey">
<rich:columns value = "#{pageDataModel.columnNames}" var = "column" index = "idx">
<f:facet name = "header">
<h:outputText value = "#{column}"/>
</f:facet>
<h:outputText value = "#{classFieldValues[idx]}" />
</rich:columns>
</rich:dataTable>
У меня уже есть метод для bean-компонента для выполнения сортировки.
public void sort(int column)




В итоге я сделал это вручную. Я добавляю тег поддержки к текстовому тегу заголовка, вот так.
<h:outputText value = "#{column}">
<a4j:support event = "onclick" action = "#{pageDataModel.sort(idx)}"
eventsQueue = "instancesQueue"
reRender = "instanceList,instanceListScroller"/>
</h:outputText>
Чтобы получить стрелки вверх / вниз, я добавил класс css.
<h:outputText value = "#{column}" styleClass = "#{pageDataModel.getOrderClass(idx)}" >
<a4j:support event = "onclick" action = "#{pageDataModel.sort(idx)}"
eventsQueue = "instancesQueue"
reRender = "instanceList,instanceListScroller"/>
</h:outputText>
Взгляните на свойство sortBy объекта rich: columns, возможно, это то, что вы ищете. Справочник Richfaces
Можете ли вы просто использовать Collection.sort () при получении списка?
Ваша модель данных должна реализовывать "изменяемый" интерфейс.
В datatable будет называться метод modify() для выполнения на стороне сервера.
сортировка и фильтрация.
Здесь есть довольно элегантное решение:
http://livedemo.exadel.com/richfaces-demo/richfaces/sortingFeature.jsf?tab=ex-usage
В этой демонстрации не используется тег.
Это показывает, как выполнять внешнюю сортировку, но сортировка все еще выполняется на стороне клиента. Я считаю, что OP заинтересован в том, чтобы поймать событие щелчка, щелкнув заголовки, а затем отсортировав базовый источник данных на бэкэнде.
Я не могу заставить этот атрибут работать постоянно. Во всяком случае он сказал сортировку на стороне сервера. Разве не Rich: столбцы с сортировкой на стороне клиента sortBy?