Spring MissingServletRequestParameterException 错误,尽管参数位于 POST 中

问题描述 投票:0回答:1

我有一个应用程序,Spring 偶尔会抛出错误:

org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'action' is not present

当然,您会期望缺少

action
参数,但它肯定是由浏览器发布的。我什至用 Wireshark 观察网络流量,它就在那里!

这是从 Chrome 开发工具中获取的原始帖子示例 - 请注意

&action=accept
在那里:

 imageId=1445&customReason=&action=accept&image=iVBORw0K...

&image
是一个base64编码的图像(取自canvas元素),整个POST大约为4Mb。

它在 Tomcat 6.0 和 Spring 3.2.8 中运行。

引发此问题的 Spring MVC 控制器是:

public String saveApprove(
      HttpServletRequest request,
      Model model,
      @RequestParam(value="action", required=true) String action,
      @RequestParam("imageId") int imageId,
      @RequestParam(value="image", required=false) String imageBase64Encoded,
      @RequestParam(value="rejectReasons", required=false) String rejectReasons[],
      @RequestParam(value="customReason", required=false) String customReason

  )

这可能是什么原因造成的?大多数照片都可以,但大约 10% 会出现此错误。对于抛出它的照片来说它是可再现的。

这是 Spring 的一个错误吗?

java spring spring-mvc
1个回答
0
投票

此错误与整个网址长度相关吗

据我所知,Http url 的大小是有限的 您可以尝试通过带有多部分数据标头的请求正文发送图像,或搜索将参数拆分为块的方法

希望这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.