弹簧窗体控制器与html复选框

raj*_*hch 2 spring spring-mvc

我试图使用弹簧形式控制器绑定输入类型复选框,但我失败了.

这里我发布了Controller,bean和jsp的例子,还有一件事是我无法使用.

以下是代码:

控制器:

package com.test.web;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

import com.vaannila.domain.User;
import com.vaannila.service.UserService;

@SuppressWarnings("deprecation")
public class UserController extends SimpleFormController {

    private UserService userService;

    public UserController() {
        setCommandClass(User.class);
        setCommandName("user");
    }

    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    @Override
    protected ModelAndView onSubmit(Object command) throws Exception {
        User user = (User) command;
        user.setCommunity(user.getCommunity());
        userService.add(user);
        return new ModelAndView("userForm","user",user);
    }

}
Run Code Online (Sandbox Code Playgroud)

JSP:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Registration Page</title>
<script>
function submitForm(){
document.testForm.submit();

}
</script>
</head>
<body>

<form:form method="POST" commandName="user" name="testForm" action="./userRegistration.htm">
    <table>
        <tr>
            <td>User Name :</td>
            <td><form:input path="name" /></td>
        </tr>
        <tr>
            <td>Password :</td>
            <td><form:password path="password" /></td>
        </tr>
        <tr>
            <td>Gender :</td>
            <td><form:radiobutton path="gender" value="M" label="M" /> 
                <form:radiobutton path="gender" value="F" label="F" /></td>
        </tr>
        <tr>
            <td>Country :</td>
            <td><form:select path="country">
                <form:option value="0" label="Select" />
                <form:option value="1" label="India" />
                <form:option value="2" label="USA" />
                <form:option value="3" label="UK" />
            </form:select></td>
        </tr>
        <tr>
            <td>About you :</td>
            <td><form:textarea path="aboutYou" /></td>
        </tr>
        <tr>
            <td>Community :</td>

                <td><input type="checkbox" name="community" value="Hibernate"/>Hibernate</br>
                <input type="checkbox" name="community" value="test"/>test</br>
                <input type="checkbox" name="community" value="test1"/>test1</br>
                </td>
        </tr>
        <tr>
            <td></td>
            <td><form:checkbox path="mailingList"
                label="Would you like to join our mailinglist?" /></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" onclick="submitForm();"></td>
        </tr>
    </table>

</form:form>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Java bean:

package com.test.domain;

public class User {

    private String name;
    private String password;
    private String gender;
    private String country;
    private String aboutYou;
    private String[] community;
    private Boolean mailingList;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }
    public String getAboutYou() {
        return aboutYou;
    }
    public void setAboutYou(String aboutYou) {
        this.aboutYou = aboutYou;
    }
    public String[] getCommunity() {
        return community;
    }
    public void setCommunity(String[] community) {
        this.community = community;
    }
    public Boolean getMailingList() {
        return mailingList;
    }
    public void setMailingList(Boolean mailingList) {
        this.mailingList = mailingList;
    }


}
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的方法,但没有运气.请提示任何提示.

Raj*_*uri 8

如果未选中该复选框,浏览器将不会在请求中发送该字段.该值将为"true"或未发送.你将永远不会得到"虚假"的价值.

为每个复选框添加带_name的隐藏字段

EX:
<input type="checkbox" name="community" value="Hibernate"/>
<input type="hidden" name="_community" value="on"/>

然后,春天将照顾它.