我正在制作一个表单来编辑用户,每个用户都有多个角色(基于 Spring Security)。问题是选择选项没有预先选择用户的通讯员角色。
用户
public class User implements UserDetails {
...
private Set<UserRole> userRoles = new HashSet<>(0);
...
}
角色
public class UserRole implements GrantedAuthority {
...
private Role role; //enum {ROLE_ADMIN, ROLE_USER,...}
...
}
形式
<form:fomr commandName="user">
<form:input path="username" />
...
<form:select multiple="true" path="userRoles" itemValue="role">
<form:options items="${roles}"/>
</form:select>
...
</form:form>
我确定问题来自“userRoles”,它是Set
“角色”的不同类型。还有另一种制作表格的方法吗?
PS:items=${roles} == Roles.values()
编辑:
User user = getUserById(id);
model.addAttribute("newUser", user);
@Transactional
public User getUserById(int id) {
Session session = sessionFactory.getCurrentSession();
User user = (User) session.get(User.class, id);
if (user != null) {
user.getUserRoles().size();
}
return user;
}