【问题标题】:Getting null values from checkboxes从复选框获取空值
【发布时间】:2015-09-06 13:19:02
【问题描述】:

我正在开发一个简单的 Spring MVC 项目。我无法从复选框中获取值。我的意思是当用户选中 3 个中的 2 个框时,所有 3 个都绑定到一个列表,其中未选中的值为 null。那是错误的。我只想要检查的值。那些没有被检查的根本不应该列出来。 这是我的代码的 sn-p: 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”。我究竟做错了什么?或者有解决办法吗?

请帮忙 谢谢。

【问题讨论】:

    标签: spring-mvc arraylist data-binding jstl


    【解决方案1】:

    简单的作家

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

    在控制器类中使用

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

    简单的你得到选择的值

    【讨论】:

    • 对不起,我刚刚看到你的回答。我没有测试过你的解决方案,但我自己已经找到了解决方案。此外,您正在使用 html 标签。我不能使用 html 标签。我可以使用 JSTL 核心标签或 Spring 标签。我即将发布的解决方案同时使用了 JSTL 核心标签和 Spring 标签。感谢您尝试回答我的问题。非常感谢。
    【解决方案2】:

    我找到了解决方案!

    我找到了两种解决方法。这是使用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 的https://stackoverflow.com/a/15529281/4828463

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

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

    同样valuelabel 属性很重要。

    【讨论】:

      猜你喜欢
      • 2012-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多