Я использую PrimeFaces'
dataTable с фильтрацией и в конечном итоге отложенной загрузкой. Одна фильтрация выполняется на уровне клиента, а отложенная загрузка выполняется на уровне сервера.
Здесь вы можете найти несколько примеров.
Оба реализованы с использованием функций Ajax от PrimeFaces: при вводе каждого символа применяются фильтры и обновляются результаты.
При ленивой загрузке PrimeFaces у вас также есть возможность самостоятельно обрабатывать фильтры: при вводе символа в фильтр вызывается ваша реализация фильтра: с помощью нескольких запросов Criteria Builder вы можете написать условия WHERE. безопасным для типов и OO путем создания массива Predicates
: это означает, что вам не нужно писать ни одной строки кода SQL.