2015-03-23 3 views
0

У меня есть веб-страница с формой поиска (с имя и фамилия поля) и таблица лиц. Когда пользователь вставляет имя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)); 
    } 

Теперь, если у меня есть имя и фамилия мой поиск в порядке. Проблема в том, что имя или фамилия не оценивается в веб-форме.

Какова наилучшая практика в этой ситуации?

ответ

0

Вы можете просто поставить чек на имя и фамилию, имеющие значения, в вашем методе searchPersons. Если name != null, добавьте условие имени, если surname != null добавьте условие фамилии. Пока добавлено 1 условие, выполните запрос.

Смежные вопросы