我有以下代码代表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%的时间内都能正常工作,而不是针对该用户呢?
答案 0 :(得分:0)
仅供参考,该错误是由于在JSON 中包含来自TextArea值的未编码%(百分比)特殊字符引起的。