-1

我有以下表格:

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

4

3 回答 3

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

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

于 2013-08-12T09:03:34.073 回答
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/

于 2013-08-12T09:03:09.750 回答
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>

适用于 spring 3.1.1.RELEASE(不知道旧版本)

于 2013-08-12T12:05:08.343 回答