Java Spring MVC manytomany@Modelattribute绑定
嗨,我是春季MVC的新手。我创建了许多关系(用户、角色、用户角色)。我正在尝试插入(用户角色)。所以我选择了所有角色,并将其显示到JSP页面,并让用户选择(Multiple=true)。选择提交请求的时间后。它给出了绑定错误。我认为问题出在UserSetting.jsp中。有人能帮忙吗Java Spring MVC manytomany@Modelattribute绑定,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,嗨,我是春季MVC的新手。我创建了许多关系(用户、角色、用户角色)。我正在尝试插入(用户角色)。所以我选择了所有角色,并将其显示到JSP页面,并让用户选择(Multiple=true)。选择提交请求的时间后。它给出了绑定错误。我认为问题出在UserSetting.jsp中。有人能帮忙吗 ## BINDING ERROR ## HTTP ERROR 400 Problem accessing /DistributionSystem/submitUser. Reason: Bad Request
## BINDING ERROR ##
HTTP ERROR 400
Problem accessing /DistributionSystem/submitUser. Reason:
Bad Request
UserEntity.java
private Set<RoleEntity> roles = new HashSet<>(0);
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "USER_ROLES", joinColumns = {
@JoinColumn(name = "ROLE_ID", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "USER_ID",
nullable = false, updatable = false) })
public Set<RoleEntity> getRoles() {
return roles;
}
}
public void setRoles(Set<RoleEntity> roles) {
this.roles= roles;
}
私有集角色=新哈希集(0);
@ManyToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@JoinTable(name=“USER\u ROLES”,joinColumns={
@JoinColumn(name=“ROLE\u ID”,nullable=false,updateable=false)},
inverseJoinColumns={@JoinColumn(name=“USER\u ID”,
nullable=false,updateable=false)})
公共集getRoles(){
返回角色;
}
}
公共无效集合角色(集合角色){
这个。角色=角色;
}
Controller.java
@RequestMapping(value = "/submitUser", method = RequestMethod.POST, params = "add")
protected String addUser(Model model, @ModelAttribute("user") UserEntity user){//,@RequestParam("userRoles") List<Integer> userRoles) {
//System.out.println(userRoles.size());
System.out.println("======="+user.getRoles().size());
//userService.addUser(user);
return "userSettingsPage";
}
@RequestMapping(value=“/submitUser”,method=RequestMethod.POST,params=“add”)
受保护字符串addUser(模型模型,@modeldattribute(“用户”)UserEntity user){/,@RequestParam(“userRoles”)列表userRoles){
//System.out.println(userRoles.size());
System.out.println(“==========”+user.getRoles().size());
//userService.addUser(用户);
返回“userSettingsPage”;
}
UserSetting.jsp
<div class="alert-alert-success">
<div class="col-sm-3">
<label>Roles</label>
<div class="form-inline">
<div class="col-md-4">
<select id="dates-field2" class="multiselect form-control" multiple="multiple" name="roles">
<c:forEach items="${userRoles}" var="role">
<option value=${role}> ${role.name} </option>
</c:forEach>
</select>
</div>
</div>
</div>
</div>
</div>
角色
${role.name}
请发布完整的堆栈跟踪,同时您可以尝试将此添加到您的控制器中:
@InitBinder
public void webFormDataBinder( WebDataBinder webDataBinder ){
webDataBinder.registerCustomEditor(Set.class, "roles", new CustomCollectionEditor(Set.class){
RoleEntity roleEntity = null;
@Override
protected Object convertElement(Object element) {
roleEntity = new RoleEntity();
roleEntity.setRoleId( element.toString() );
return roleEntity;
}
});
}