#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. Опубликуйте полную трассировку стека.