Я знаю, что уже были вопросы по этой теме, но я не понял, как решить следующую проблему:
У меня есть отношение пользователя/ролей, и я хочу перечислить все доступные роли в JSP как элементы флажка, где выбраны флажки, назначенные пользователям. Однако совпадающие элементы не проверяются (здесь я использую Spring 3.1).
Извлечь из объекта User:
private Set<RoleEntity> roles = new HashSet<RoleEntity>();
Извлечь из контроллера Spring (добавление объекта пользователя и списка ролей в модель):
UserEntity userEntity = userEntityService.findById(UserEntity.class, new Long(id));
model.addAttribute("userAttribute", userEntity);
List<RoleEntity> roleList = roleEntityService.findAll();
model.addAttribute("roleList", roleList);
Извлечь из JSP:
<form:form modelAttribute="userAttribute" method="POST" action="${saveUrl}">
...
<table align="center">
<tr>
<td>ID</td>
<td>Role Name</td>
</tr>
<c:forEach items="${roleList}" var="role" varStatus="status">
<tr>
<td><form:checkbox path="roles" value="${role}" label="${role.id}" /></td>
<td><c:out value="${role.name}" /></td>
</tr>
</c:forEach>
</table>
...
</form:form>
Документация MVC Spring гласит: Когда связанное значение имеет тип array или java.util.Collection, вход (checkbox) помечен как "checked", если настроенное значение setValue (Object) присутствует в связанной коллекции.
Разве это не так? Что мне здесь не хватает?
Большое спасибо.
Пол