从复选框中获取空值
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>
同样,value
和 label
属性很重要。
我正在开发一个简单的 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>
同样,value
和 label
属性很重要。