HttpMessageNotReadableException: отсутствует обязательное тело запроса (иногда) - HTTP-метод сопоставления запросов контроллера по умолчанию SpringMVC? - PullRequest
1 голос
/ 18 октября 2019

У меня есть следующий код, представляющий запрос 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%? времени, а не для этого одного пользователя?

1 Ответ

0 голосов
/ 18 октября 2019

FYI, ошибка была вызвана включением в JSON незашифрованного% (процента) специального символа, полученного из значения TextArea .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...