我有一个应用程序,偶尔Spring会抛出错误:
org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'action' is not present
当然,您会希望action
参数丢失,但它肯定会被浏览器发布。我甚至远远看到了Wireshark的网络流量,它就在那里!
以下是从Chromes开发工具中获取的原始帖子的示例 - 请注意&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%的照片会抛出此错误。它可以重现投射它的照片。
这是春天的错误吗?