如何将多个选择下拉值绑定到我的模型?
单击提交按钮获取[400错误请求 - 客户端发送的请求在语法上不正确()]。这是多对多的情况,问题是该值应该在db表userrole(具有User类中的映射)中持久存在,尽管命令名来自User类。
虽然在浏览器网络中可以看到从UI中选择的两个值。
userController.java
@RequestMapping(value = "/registerUser.html", method = RequestMethod.POST)
public String createNewUser(Model model,@ModelAttribute("user") User user) {
String message = null;
try{
user.setUserStatus(UserStatus.ACTIVE);
user.setPassword(EncryptionUtil.encryptMD5Hash(user.getPassword()));
message = loginService.createUser(user);
}catch(Exception e){
model.addAttribute("message", "Some thing went wrong !!!! Exception occoured");
}
model.addAttribute("message", message);
return "message";
}
User.java
@Entity
@Table(name="user")
public class User implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="userId")
private Long userId;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "userrole",joinColumns = {
@JoinColumn(name = "UserId", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "roleId",
nullable = false, updatable = false) })
private Set<Role> roles;
}
Role.java
@Entity
@Table(name="role")
public class Role {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="roleId")
private Long roleId;
@ManyToMany(mappedBy = "roles")
private Set<User> user;
}
createUser.jsp
<form:form action="registerUser.html" method="post" commandName="user" >
<table>
<tr>
<td>Assign Roles</td>
<td>
<form:select path="roles" multiple="true">
<c:forEach var="r" items="${roleList}">
<option value="${r.roleId}">${r.roleName}</option>
</c:forEach>
</form:select>
</td>
</tr>
<tr><td><input type="submit" value="create user"/></td></tr>
</table>
</form:form>