Как вы делаете постраничные списки в JavaServer Faces? - PullRequest
4 голосов
/ 16 сентября 2008

У меня есть приложение JSF , которое я преобразовываю для использования веб-сервисов вместо прямых запросов к базе данных. Есть несколько чрезвычайно длинных списков, которые до можно было бы легко вернуть простым SQL-запросом. Я хотел бы выяснить, как реализовать пейджинг с использованием JSF / веб-сервисов. Есть ли хороший шаблон проектирования для выполнения постраничных веб-сервисов?

Если это имеет значение, в настоящее время я использую справочную реализацию JSF Apache MyFaces с расширениями Tomahawk (набор компонентов JSF, созданных командой разработчиков MyFaces до ее передачи Apache). 1009 *

Ответы [ 5 ]

2 голосов
/ 17 сентября 2008

Мы использовали библиотеку RichFaces Datatable: http://livedemo.exadel.com/richfaces-demo/richfaces/dataTable.jsf?tab=usage

Это довольно просто, и если вы еще не используете RichFaces, действительно легко интегрировать с MyFaces.

2 голосов
/ 16 сентября 2008

Тринидад имеет компонент таблицы, который поддерживает разбиение на страницы, что может помочь. Это не идеальный вариант, но он достаточно хорошо работает с Seam, как описано в статье Питера Муира о поддержке данных Тринидада в блоге Seam .

Если вы не находите JSF-компонент, который вам нравится, вам нужно написать собственную логику для установки параметров для limit и offset в вашем EJB-QL (JPA ) запросов.

2 голосов
/ 16 сентября 2008

Это зависит от того, хотите ли вы выполнять пейджинг на стороне клиента или на стороне сервера. На стороне сервера ваши веб-службы должны будут включать в себя несколько дополнительных параметров (например, «startFrom» и «pageSize»), которые позволят вам указать, какую «страницу» данных нужно извлечь. Ваша служба, вероятно, также должна будет вернуть общий размер результата, чтобы вы могли сгенерировать элемент управления подкачкой.

Если вы решите, что это слишком много усилий, вы можете выполнять подкачку на стороне клиента в компоненте поддержки (или получить компонент, который сделает это за вас), однако это не рекомендуется, если речь идет о тысячах объектов!

2 голосов
/ 16 сентября 2008

Мне нравятся объекты Seam's Query: http://docs.jboss.com/seam/2.1.0.BETA1/reference/en-US/html_single/#d0e7527

Они в основном абстрагируют весь SQL / JPA в компоненте Seam, который JSF может легко использовать.

Если вы не хотите использовать Seam и / или JPA, вы можете реализовать аналогичный шаблон.

1 голос
/ 18 сентября 2008

Если вы получаете все результаты сразу от веб-службы и не можете включить нумерацию страниц в фактический вызов веб-службы, вы можете попробовать настроить список элементов для свойства управляемого компонента. Затем вы можете подключить его к атрибуту «value» таблицы данных Tomahawk:

http://myfaces.apache.org/tomahawk-project/tomahawk/tagdoc/t_dataTable.html

и затем вы можете использовать Tomahawk dataScroller для разбивки на страницы списка элементов, хранящихся в этом свойстве. Вот ссылка на этот компонент, он хорошо работает с компонентом dataTable:

http://myfaces.apache.org/tomahawk-project/tomahawk/tagdoc/t_dataScroller.html

Вы можете включить это в фасеты верхнего / нижнего колонтитула dataTable или в качестве отдельного компонента (вам нужно будет указать идентификатор dataTable в атрибуте 'for' dataScroller.

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

Надеюсь, это поможет!

...