У меня есть веб-страница с формой поиска (с имя и фамилия поля) и таблица лиц. Когда пользователь вставляет имяn
и фамилиюs
Я должен показать людям с именем как n
ифамилии как s
. Когда пользователь вводит только имя , я должен фильтровать только имя и то же самое, когда пользователь вставляет только фамилия.Весна JPA и фильтр формы
Мой searchPersons
метод в контроллер выглядит следующим образом:
@RequestMapping(value = RouteConfig.SEARCH_PERSONS)
public @ResponseBody Page<Person> searchPersons(@ModelAttribute Person p, Pageable pageable) {
return pazienteRepository.findAll(where(nameIsLike(p.getName())).and(surnameIsLike(p.getSurname())), pageable);
}
Я пишу PersonSpecifications
класс:
public class PersonSpecifications {
public static Specification<Person> nomeIsLike(String name) {
return (Root<Person> root, CriteriaQuery<?> query, CriteriaBuilder cb) ->
cb.like(cb.lower(root.<String>get(Person_.nome)), getLikePattern(name));
}
public static Specification<Person> surnameIsLike(String surname) {
return (Root<Person> root, CriteriaQuery<?> query, CriteriaBuilder cb) ->
cb.like(cb.lower(root.<String>get(Person_.surname)), getLikePattern(surname));
}
Теперь, если у меня есть имя и фамилия мой поиск в порядке. Проблема в том, что имя или фамилия не оценивается в веб-форме.
Какова наилучшая практика в этой ситуации?