我有以下表格:
<form action="findBySkills"><br>
<c:forEach items="${skills}" var="skill">
${skill.name} <input type="checkbox" name="skills" value="${skill.id}"> <br>
</c:forEach>
我怎样才能${skill.id}
从我的@Сontroller
?
您可以使用ModelAttribute
从复选框传递多个项目
@RequestMapping("/findBySkills")
public ModelAndView processSkill(@ModelAttribute SkillDTO skillDTO)) {
String[] skills = skillDTO.getSkills();
...
}
SkillDTO
一个简单的 POJO在哪里
public class SkillDTO {
private String[] skills;
public String[] getSkills() {
return skills;
}
public void setSkills(String[] skills) {
this.skills = skills;
}
}
注意:这些都没有经过测试
你会得到如下所示的方式,
String[] parameterValues = request.getParameterValues("skills");
parameterValues 将包含所有选中的复选框。
更多信息: http ://www.roseindia.net/jsp/GetParameterValuesMethod.shtml
此链接解释了使用 Spring 在 Servlet 端访问所有 html 表单元素的方式。基于注释:http ://www.mkyong.com/spring-mvc/spring-mvc-form-handling-annotation-example/
非常简单,不需要创建 DTO。控制器:
@RequestMapping(value = "/test", method = RequestMethod.POST)
public String form(@RequestParam(required = false) List<Integer> checks) {
if(checks != null) { // if checkbox is not selected it is null
for(Integer check: checks) {
System.out.println(check);
}
}
return "index-client";
}
jsp:
<form action="${home}/test" method="POST">
<input type="checkbox" value="1" name="checks" />
<input type="checkbox" value="2" name="checks" />
<input type="checkbox" value="3" name="checks" />
<input type="submit" />
</form>
适用于 spring 3.1.1.RELEASE(不知道旧版本)