ajax - HttpMessageNotReadableException:缺少所需的请求正文(偶尔)- SpringMVC 默认控制器请求映射 HTTP 方法?
问题描述
我有以下代码代表一个 Ajax POST 请求:
@RequestMapping("/participant/insertEvent")
public boolean insertEvent(Principal principal, @RequestBody String json, HttpServletRequest request) throws Exception {
//...
//return true or false
}
JS:
$.ajax({
type : "post",
dataType : "json",
url : '/app/participant/insertEvent',
data : JSON.stringify({'p1': p1, 'p2' : p2})
});
该应用程序已部署在生产环境中,并且整个星期都在与许多用户合作。
今天早上我在这个方法(insertEvent
)中遇到了以下生产问题:
org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public boolean
app.controller.participant.AjaxOperationsController.insertEvent(java.security.Principal,java.lang.String,javax.servlet.http.HttpServletRequest) throws java.lang.Exception at
org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:161) at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:130) at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:124) at
org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:161) at ...
我想知道,是不是因为我没有明确指定这是一个method={RequestMethod.POST}
?
但是如果我不指定 HTTP 方法,那么默认是什么?
但是,如果这是问题所在,那么为什么该应用程序 99% 的时间都在工作,而不是为那个用户工作?
解决方案
仅供参考,该错误是由于在 JSON 中包含来自 TextArea值的未编码的 %(百分比)特殊字符引起的。
推荐阅读
- django - django 社交媒体应用程序 ManyToManyField 人口问题
- python - Matplotlib 在条形图中删除数据
- abap - 如果未找到行,则使用第二个条件
- python - 需要帮助理解格式“.2f”命令以及为什么它在我的代码中不起作用
- ios - UIAlertController 在 iPhone 8 设备上无法正确关闭
- javascript - 如何在 lightblue flexbox 中居中文本?
- ruby-on-rails - 通过静态 IP 连接到 heroku 中的 Oracle 数据库时出现问题
- elasticsearch - kibana 没有按时间分组
- excel-formula - 如何根据两个单元格的内容开发公式
- java - Scala - 如何将集合格式化为字符串?