JavaSpring表单从对象中选择枚举
我正在制作一个表单来编辑用户,每个用户都有多个角色(基于SpringSecurity)。问题是选择选项没有预先选择用户的对应角色
使用者
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”,它是一种与“roles”不同类型的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;
}
# 1 楼答案
我有这个“解决方案”,但我一直在寻找春天能自动完成的事情
# 2 楼答案
在你的角色enum中有以下代码
现在在控制器代码中,而不是这样做
做
这应该能很好地解决你的问题