Добавление фильтра в spring

Здравствуйте, можете подсказать как добавить еще один фильтр

 @PostMapping ("filter")
    public String filter(@RequestParam String filter, Model model)
    {
        List<Post> posts = postRepositor.findByDolz(filter);
        model.addAttribute("posts", posts);
        return "blog-main";
    }

есть фильтр по должностям с переменной Dolz, нужно добавить еще такой-же(например по опыту с переменной Opt. Пытался повторить такую же конструкцию не получилось(

 @PostMapping ("filter")
    public String filter(@RequestParam String filter, Model model)
    {
        List<Post> posts1 = postRepositor.findByOpt(filter);
        model.addAttribute("posts", posts);
        return "blog-main";
    }

Добавлял в существующую конструкцию, также нет

 @PostMapping ("filter")
    public String filter(@RequestParam String filter, Model model)
    {
        List<Post> posts = postRepositor.findByDolz(filter);
        model.addAttribute("posts", posts);

        List<Post> posts1 = postRepositor.findByOpt(filter);
        model.addAttribute("posts", posts);

        return "blog-main";
    }

Help


Ответы (2 шт):

Автор решения: azlov

Пытался повторить такую же конструкцию не получилось

В одном классе двух методов с одной сигнатурой быть не может public String filter(@RequestParam String filter, Model model).

Добавлял в существующую конструкцию, также нет Вы ведь два раза перезаписали posts, с одним и тем же значением.

List<Post> posts = postRepositor.findByDolz(filter);
model.addAttribute("posts", posts);

List<Post> posts1 = postRepositor.findByOpt(filter);
model.addAttribute("posts", posts); // список по findByDolz

Вам необходим фильтр по dolz и opt, так почему бы не создать findByDolzAndOpt()?

→ Ссылка
Автор решения: Alexander Ivanov

Очевидно модель не позволяет добавлять два attribute с одним именем.
Проще всего добавить в postRepositor метод findByDolzAndOpt выполняющий нужный отбор.
Если же нужно выбрать по условию ИЛИ по должности:

List<Post> result1 = postRepository.findByDolz(filter);
List<Post> result2 = postRepository.findByOpt(filter);
List<Post> orResult = new ArrayList<>();
orResult.addAll(result1);
orResult.addAll(result2);
model.addAttribute("posts", orResult);
→ Ссылка