簡體   English   中英

Spring MVC manytomany @Modelattribute綁定

[英]Spring MVC manytomany @Modelattribute Binding

嗨,我是Spring MVC的新手。 我創建了ManytoMany關系(用戶,角色,User_Roles)。 我正在嘗試插入(User_Roles)。 因此,我選擇了所有角色並將其顯示到JSP頁面,並給用戶選擇(Multiple = true)。 選擇后,當我提交請求。 它給出了綁定錯誤。 我認為問題出在UserSetting.jsp中。 有人可以幫忙嗎?

## 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;
    }

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";
    }

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>

請發布完整的stacktrace,同時您可以嘗試將此添加到Controller中

@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;
        }
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM