Ошибка исключения Spring MissingServletRequestParameterException, несмотря на то, что параметры находятся в POST

#java #spring #spring-mvc

#java #spring #spring-mvc

Вопрос:

У меня есть приложение, в котором иногда Spring выдает ошибку: org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'action' is not present

Естественно, вы ожидаете, что action параметр будет отсутствовать, однако он определенно публикуется браузером. Я даже зашел так далеко, что наблюдал за сетевым трафиком с помощью Wireshark, и он есть!

Вот пример необработанного сообщения, взятого из Chromes dev tools — Обратите внимание, что amp;action=accept там:

  imageId=1445amp;customReason=amp;action=acceptamp;image=iVBORw0K...
  

amp;image это изображение в кодировке base64 (взято из элемента canvas), а весь ПОСТ занимает около 4 МБ.

Это выполняется внутри 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?

Комментарии:

1. Опубликуйте полную трассировку стека.