Как поместить выбранные значения из checkbox в ArrayList с помощью thymeleaf (отношение «многие ко многим» в БД)

#java #html #spring #database #thymeleaf

#java #HTML #весна #База данных #thymeleaf

Вопрос:

Я создаю веб-приложение с Spring MVC, и у меня есть 3 таблицы с отношениями «многие ко многим». лекции—<lecture_groups>—группы. Я могу создать новую лекцию в браузере, но тогда мне нужно установить группы для этой лекции.

Моя идея состояла в том, чтобы выбрать все группы с помощью checkbox и поместить их в массив. Кроме того, у меня был бы идентификатор новой лекции и массив с идентификатором группы свойств, и я бы создал несколько объектов LectureGroup и сохранил их в БД, но я не знаю, как поместить значения флажков в массив.

Я придумал что-то вроде этого.

 <body>
<form th:method="POST" th:action="@{/lectures/{id}/addGroups(id=${lectureId})}" th:object="${groupContainer}">
    <h2>Choose groups for lecture:</h2>
    <ul>
        <li th:each="group : ${groups}">
            <label th:for="${group.getId()}" th:text="${group.getName()}">Group</label>
            <input type="checkbox" th:value="${group.getId()}" th:id="${group.getId()}" th:field=*{groupsId}"/>
        </li>
    </ul>
    <input type="submit" value="Add!"/>
</form>
</body>
 

И методы в контроллере:

 @GetMapping("/{id}/addGroups")
public String selectGroups(Model model, @PathVariable("id") int lectureId) {
    model.addAttribute("groupContainer", new ArrayList<Integer>());
    model.addAttribute("lectureId", lectureId);
    model.addAttribute("groups", groupService.getAllGroups());
    return "lectures/lecture_groups";
}

@PostMapping("/{id}/addGroups")
public String addGroups(@PathVariable("id") int lectureId, @RequestParam("groupContainer") ArrayList<Integer> selectedGroups) {
    for (Integer groupId : selectedGroups){
        lectureGroupService.save(new LectureGroup(lectureId, groupId));
    }
    return "redirect:/lectures";
}
 

Но это не работает.
Пожалуйста, дайте мне совет, как решить эту проблему.