#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";
}
Но это не работает.
Пожалуйста, дайте мне совет, как решить эту проблему.