Сортировка таблиц данных на стороне сервера в RichFaces

У меня есть таблица данных с переменным количеством столбцов и скроллер данных. Как включить сортировку на стороне сервера? Я предпочитаю, чтобы его запускал пользователь, щелкнув заголовок столбца.

<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)
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
8
0
19 687
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

В итоге я сделал это вручную. Я добавляю тег поддержки к текстовому тегу заголовка, вот так.

<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

Я не могу заставить этот атрибут работать постоянно. Во всяком случае он сказал сортировку на стороне сервера. Разве не Rich: столбцы с сортировкой на стороне клиента sortBy?

april26 18.08.2009 21:07

Можете ли вы просто использовать Collection.sort () при получении списка?

Ваша модель данных должна реализовывать "изменяемый" интерфейс.

В datatable будет называться метод modify() для выполнения на стороне сервера. сортировка и фильтрация.

Здесь есть довольно элегантное решение:

http://livedemo.exadel.com/richfaces-demo/richfaces/sortingFeature.jsf?tab=ex-usage

В этой демонстрации не используется тег.

Это показывает, как выполнять внешнюю сортировку, но сортировка все еще выполняется на стороне клиента. Я считаю, что OP заинтересован в том, чтобы поймать событие щелчка, щелкнув заголовки, а затем отсортировав базовый источник данных на бэкэнде.

Jason Wheeler 07.02.2012 22:47

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