Добавление фильтра в 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 шт):
Пытался повторить такую же конструкцию не получилось
В одном классе двух методов с одной сигнатурой быть не может 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()?
Очевидно модель не позволяет добавлять два 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);