使用弹簧工具处理html表单复选框?

时间:2013-08-12 08:53:27

标签: java spring jsp

我有以下表格:

<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

3 个答案:

答案 0 :(得分:2)

您可以使用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;
    }
}

注意:这些都没有经过测试

答案 1 :(得分:0)

您将通过以下方式获得,

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/

答案 2 :(得分:0)

这很简单,没有必要创建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>

适用于春季3.1.1.RELEASE(不了解旧版本)