Привет. Значит проблема такая, передаю в JSP модели Role через ModelMap.
@RequestMapping(value = "/users/add", method = RequestMethod.GET)
public String getPageAddUser(ModelMap model) {
model.addAttribute("roles", roleService.readAll());
return "user-action";
}
Следующий шаг. Формирую JSP в котором формируются данные о User, а в select выбираю Roles данного user.
<form:form method="post" name="user" action="/users">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
<input type="text" class="form-control form-control-sm" name="login" placeholder="Логин"
title="login" value="${user.login}"/>
</div>
<div class="input-group" style="margin-top: 10px; margin-bottom: 10px;">
<span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
<input type="password" class="form-control form-control-sm" name="password" placeholder="Пароль"
title="password"/>
</div>
<select class="form-control selectpicker" title="Роли пользователя" name="roles" multiple> // user.getRoles();
<c:forEach items="${roles}" var="role">
<option name="title">${role.title}</option>
</c:forEach>
</select>
<c:if test="${!empty user.login}">
<input type="submit" class="btn btn-primary"
style="width: 100%; margin-top: 20px;" value="Сохранить">
</c:if>
<c:if test="${empty user.login}">
<input type="submit" class="btn btn-success"
style="width: 100%; margin-top: 20px;" value="Добавить">
</c:if>
</form:form>
Далее отправляю HTTP POST запрос и получаю следующую картину.
user.getLogin() - имеет имя.
user.getPassword() - имеет пароль.
user.getRoles() - имеет выбранные роли, но id == null
Вопрос, как вернуть с jsp Roles в которых будут id как и при передаче в jsp?
@RequestMapping(value = "/users", method = RequestMethod.POST)
public String editUser(@ModelAttribute("user") User user) {
for (Role role: user.getRoles()) {
System.out.println(role.getId() + " " + role.getTitle()); // null admin
}
userService.create(user);
return "redirect:/users";
}