从复选框中获取空值

Getting null values from checkboxes

我正在开发一个简单的 Spring MVC 项目。我无法从复选框中获取值。我的意思是,当用户选中 3 个中的 2 个时,所有 3 个都绑定到一个列表,其中未选中的值为 null。那是错误的。我只想要经过检查的值。那些没有被检查的根本不应该来列出。 这是我的代码片段: POJO:

public class Student{
private List<StudentCourses> sc;
//getters and setters
}

public class StudentCourses{
private int courseID;
private String courseName;
private Character grade;
private String semesterID;
//getters and setters
} 

这是我从我的控制器发送的:

@RequestMapping(value = "/selectclasses", method = RequestMethod.POST)
public String selectClasses(Model m) {
Student s = new Student();
List<StudentCourses> coursesList = new ArrayList<StudentCourses>();
coursesList.add(new StudentCourses("Eng 101", '-', "SP 16"));
coursesList.add(new StudentCourses("Math 140", '-', "SP 16"));
coursesList.add(new StudentCourses("CS 442", '-', "SP 16"));
m.addAttribute("coursesList", coursesList);
m.addAttribute("student", s);
return "selectclasses";
}

这是我的 selectclasses.jsp:

    <form:form modelAttribute="student" method="post" action="/success">
        <table>
            <c:forEach items="${coursesList}" var="r" begin="0" varStatus="status">
                <form:checkbox path="sc[${status.index }].courseName" value="${r.courseName}" label="${r.courseName}" />
            </c:forEach>
        </table>
        <input type="submit" id="submit" name="submit" value="Submit" />
    </form:form>

我不知道为什么 null 在未检查时传递给 "sc.courseName"。我究竟做错了什么?或者有解决办法吗?

请帮忙 谢谢。

单纯的作家

<input type="checkbox" value="${r.courseName}" id="id"name="name"/>

在控制器中 class 使用

获取值
String []values=request.getParameterValues(pass the id);

很简单,你得到了选定的值

我找到了解决方案!

我找到了两种解决方法。这是使用 Spring 标签的解决方案:

<form:checkboxes path="sc" items="${coursesList}" itemValue="courseName" itemLabel="courseName" />

上面代码中,itemValue和itemLabel是主要的! itemValue 和 itemLabel 仅引用 items 属性 (items="${coursesList}") 中对象的 bean 属性。简而言之,如果您需要使用自定义 Bean 列表作为 items 属性,您还需要使用 itemValue 和 itemLabel 属性。 这段粗体部分摘自: @Carlos Gavidia

现在使用 JSTL 核心标签的解决方案:

    <c:forEach items="${coursesList}" var="courses">
        <tr>
            <td><form:checkbox path="sc" value="${courses.courseName}" label="${courses.courseName}"/></td>
        </tr>
    </c:forEach>

同样,valuelabel 属性很重要。