【问题标题】:Spring MVC pass a list of values into controller from JSP pageSpring MVC 将值列表从 JSP 页面传递到控制器
【发布时间】:2012-11-16 03:01:59
【问题描述】:

如果我在 <form> 中有这样的 HTML:

    <input type="text" value="someValue1" name="myValues"/>
    <input type="text" value="someValue2" name="myValues"/>
    <input type="text" value="someValue3" name="myValues"/>
    <input type="text" value="someValue4" name="myValues"/>

我知道在 servlet 中我可以使用以下方法获取值:

String[] values = request.getParameterValues("myValues");

如何使用 Spring MVC 做类似的事情?

【问题讨论】:

  • Spring MVC 建立在 servlet 之上,因此 request.getParameter 在其中仍然可用。

标签: java spring spring-mvc


【解决方案1】:

参数作为参数传递给绑定到控制器的方法

@RequestMapping(value = "/foo", method = RequestMethod.POST) // or GET
public String foo(@RequestParam("myValues") String[] myValues) {
    // Processing
    return "view";
}

【讨论】:

  • 谢谢,我会试试这个并告诉你。
【解决方案2】:

您已经在 Spring Web MVC 中拥有 HttpServletRequest request。我们可以使用相同的方法获得它,即使用

 String[] values = request.getParameterValues("myValues");

你也可以使用ServletRequestUtils在Spring中读取请求参数,比如:

String[] values = ServletRequestUtils.getRequiredStringParameters(request, "myValues");

查看如何访问 Http 请求:Spring 3 MVC accessing HttpRequest from controller

对于基于注释的方法:请参阅 Alex 的回答。

【讨论】:

    【解决方案3】:

    在jsp中我想:

    <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <!-- Add taglib in beginning of the page.-->
    
    <!-- In body the html -->
    <form:form  action="/foo" method="post" commandName="MyValues">
      <input type="text" value="someValue1" name="myValues1"/>
      <input type="text" value="someValue2" name="myValues2"/>
      <input type="text" value="someValue3" name="myValues3"/>
      <input type="text" value="someValue4" name="myValues4"/>
    </form:form>
    

    请参阅第 13.9 节中的参考资料。使用Spring的表单标签库标签说明,在链接:http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html

    控制器是 Alex 回答的同一个朋友的一部分。

    【讨论】: