Как скрыть строки в displaytag?

Я создал таблицу, используя библиотеку отображаемых тегов (версия 1.1), и заполняю ее значениями из базы данных. Я не хочу показывать определенные строки. Например, я хочу показать только те записи, которые соответствуют заданной строке или регулярному выражению.

Записи, извлеченные из базы данных:

foo
bar
string1
foo2
bar2
string2

Данный фильтр: "foo"

Ожидаемый результат :

foo
foo2

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

Спасибо за помощь.


person cosmincalistru    schedule 11.06.2012    source источник
comment
И почему вы хотите, чтобы ваш уровень представления управлял вашей бизнес-логикой?   -  person maksimov    schedule 11.06.2012
comment
я знаю, что это не лучший подход, но мне дали эту задачу на работе, и рефакторинг существующего приложения занял бы слишком много времени.   -  person cosmincalistru    schedule 11.06.2012
comment
если вы так ограничены, я думаю, вы всегда можете написать немного кода JSP <% ... %>, чтобы отфильтровать нужные вам результаты в новый список, установить этот список как атрибут и использовать его в качестве источника данных для вашего <display:table/> вместо списка из набора результатов.   -  person maksimov    schedule 11.06.2012
comment
Проблема в том, что я столкнулся с очень большим набором данных, и мне было интересно, есть ли способ сделать это без кэширования другого списка. В некоторых случаях фильтры могут быть слишком общими, что практически дублирует набор данных.   -  person cosmincalistru    schedule 11.06.2012
comment
Написать свой тег? Вы находитесь на территории очень плохого дизайна, не ожидайте, что легко отделаетесь.   -  person maksimov    schedule 11.06.2012


Ответы (1)


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

  2. Если вы хотите, чтобы сервер справился с этим, напишите пользовательскую реализацию для интерфейса org.displaytag.pagination.PaginatedList и добавьте свой собственный метод фильтра, который вы можете вызывать на основе ваших критериев поиска/сортировки. Обратите внимание, что если вы реализуете этот интерфейс, то ваш список должен быть только типа PaginatedList. См. Спецификацию интерфейса и DisplayTag и Отобразить проблему с нумерацией страниц для получения подробной информации.

person Raghavendra Reddy Busireddy    schedule 10.09.2013