2017-06-24 18 views
0

こんにちは、私はSpring MVCの新機能です。 ManytoMany関係(User、Role、User_Roles)を作成しました。私は(User_Roles)に挿入しようとしています。だから、私はすべてのロールを選択し、それをJSPページに表示し、ユーザーに(Multiple = true)を選択させるように指示します。私はいつ要求を提出するかを選択した後。バインディングエラーが発生します。私は問題がUserSetting.jspにあると思う。誰も助けることができますか?Spring MVC manytomany @ ModelAttribute Binding

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

答えて

0

完全なスタックトレースを投稿してください、その間あなたへの追加これを試すことができますコントローラ

@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; 
     } 
    }); 
} 
関連する問題