Spring mvc 从复选框中获取空值

Spring mvc 从复选框中获取空值,spring-mvc,arraylist,data-binding,jstl,Spring Mvc,Arraylist,Data Binding,Jstl,我正在从事一个简单的SpringMVC项目。我无法从复选框中获取值。我的意思是,当用户选中3个框中的2个时,所有3个框都绑定到一个列表中,未选中的值为null。那是错误的。我只需要检查的值。那些没有被检查的人根本不应该被列入名单。 这是我的代码片段: POJO: 这是我从控制器发送的信息: @RequestMapping(value = "/selectclasses", method = RequestMethod.POST) public String selectClasses(Model

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

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

@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>
我不知道为什么没有检查sc.courseName时会将null传递给它。我做错了什么?还是有一个工作围绕着它

请帮忙 谢谢

简单的作家

<input type="checkbox" value="${r.courseName}" id="id"name="name"/>
很简单,您可以获得所选的值

我找到了解决方案

我找到了两种解决方法。这是使用弹簧标记的解决方案:

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

值和标签属性同样重要。

对不起,伙计,我刚才看到了你的答案。我没有测试你的解决方案,但我自己已经找到了一个解决方案。此外,您正在使用html标记。我不能使用html标记。我可以使用JSTL核心标记或Spring标记。我将要发布的解决方案使用JSTL核心标记和Spring标记。谢谢你试着回答我的问题。非常感谢。
<form:checkboxes path="sc" items="${coursesList}" itemValue="courseName" itemLabel="courseName" />
    <c:forEach items="${coursesList}" var="courses">
        <tr>
            <td><form:checkbox path="sc" value="${courses.courseName}" label="${courses.courseName}"/></td>
        </tr>
    </c:forEach>