在表单数据中发送参数时,Spring @RequestParam为null

时间:2016-08-25 16:57:28

标签: java spring spring-mvc

在我的控制器中将参数作为表单数据发送时,其接收为null值。  将参数作为x-www-form-urlencoded传递时,我得到的值。 我的控制器如下:

@RequestMapping(value = "/getid", method = RequestMethod.POST)
public ServerResponse id(@RequestParam(value = "id", required = false) String id) {...}

1 个答案:

答案 0 :(得分:1)

如果需要发送参数是form-data,那么你需要在Spring中添加对此的支持, 看一下spring的文档http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-multipart

  

Spring的内置多部分支持处理Web上的文件上传   应用。您可以使用pluggable启用此多部分支持   MultipartResolver对象,在。中定义   org.springframework.web.multipart包。 Spring提供了一个   与Commons FileUpload和。一起使用的MultipartResolver实现   另一个用于Servlet 3.0多部分请求解析。

     

默认情况下,Spring没有多部分处理,因为有些开发人员   想要自己处理多部分。您启用Spring multipart   通过向Web应用程序添加多部分解析程序来处理   上下文。检查每个请求以查看它是否包含多部分。   如果未找到多部分,请求将按预期继续。如果一个   在请求中找到multipart,已经是MultipartResolver   在您的上下文中声明使用。之后,multipart属性   在您的请求中被视为任何其他属性。

这是如何使用CommonsMultipartResolver

的示例
 ReactDOM.render(
      <form><input type="text" data-val="@Model.datannotations[1].val" /></form>
  

当然,您还需要在类路径中放置适当的jar   使多部分解析器工作。在的情况下   CommonsMultipartResolver,你需要使用commons-fileupload.jar。