У меня есть пользователь, который может иметь несколько ролей.
Я создал форму, используя этот код:
<form action="#" th:action="@{/add}" th:object="${user}" method="post">
<div class="form-group">
<label for="select1">Roles</label> <select
multiple="multiple" class="form-control"
id="select1" th:field="*{roles}">
<option th:each="role : ${roles}" th:field="*{roles}"
th:value="${role.id}" th:text="${role.role}">Part name</option>
</select>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
и это RequestMapping для него:
@GetMapping(value="/add")
public String addUserForm(Model model) {
Set<Role> roles = new HashSet<>();
Role admin = new Role("1","ADMIN");
Role user = new Role("2","USER");
roles.add(admin);
roles.add(user);
model.addAttribute("user", new User());
model.addAttribute("roles", roles);
return "form";
}
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String saveUser(@ModelAttribute User user) {
userService.save(user);
return "success";
}
в классе пользователя у меня
@DBRef
private Set<Role> roles; // with getters and setters
Я всегда получаю [null] в ролях, а другие поля формы работают, я не включил их для краткости.