SpringMVC:Dropdownlist选择多个值Issue-400 bad Request

时间:2016-03-13 18:37:56

标签: java spring-mvc drop-down-menu

如何将多个选择下拉值绑定到我的模型?

单击提交按钮获取[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>

0 个答案:

没有答案