【问题标题】:Spring MVC manytomany @Modelattribute BindingSpring MVC manytomany @Modelattribute 绑定
【发布时间】:2017-11-27 17:07:02
【问题描述】:

嗨,我是 Spring MVC 的新手。我创建了多对多关系(用户、角色、用户角色)。我正在尝试插入(User_Roles)。所以我选择了所有角色并将其显示到 JSP 页面并让用户选择(Multiple=true)。在我提交请求时选择后。它给出了绑定错误。我认为问题出在 UserSetting.jsp 中。有人可以帮忙吗?

## BINDING ERROR ##
HTTP ERROR 400
Problem accessing /DistributionSystem/submitUser. Reason:
Bad Request

用户实体.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";
    }

用户设置.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>

【问题讨论】:

    标签: java spring hibernate spring-mvc


    【解决方案1】:

    请发布完整的堆栈跟踪,同时您可以尝试将此添加到您的控制器

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

    【讨论】:

      猜你喜欢
      • 2013-01-16
      • 2018-05-29
      • 2017-05-25
      • 1970-01-01
      • 2020-06-11
      • 2014-09-20
      • 1970-01-01
      • 2014-08-24
      相关资源
      最近更新 更多