У меня проблема, которая возникает в конечном итоге на моем веб-сайте. Он использует AJAX запросы для получения данных с сервера, который использует Spring MVC.
Что происходит (с перерывами) в том, что иногда мы получаем исключение, подобное этому:
org.springframework.web.bind.MissingServletRequestParameterException: Required Integer parameter 'page' is not present
at
Такое исключение возникает в некоторых вызовах AJAX POST (не только для этого случая!!), и мы по-прежнему не можем воспроизвести его, чтобы понять, что происходит.
Например, в одном из случаев параметр "страница" (используемый для загрузки контента, когда пользователь прокручивает страницу - так что это требуемая переменная) отправляется с помощью вызова AJAX, который имеет поле 'data' с параметром страницы, поступающим из такой формы:
<input type="hidden" name="page" id="page" value="1">
И такой как ajax-вызов (как $( "# filter" ), так и url):
$.ajax({
type: "POST",
data: $("#filter").serialize(), // serializes the form elements.
url: _ctx + URL_FILTER,
cache: false
})
Единственный способ, которым мы должны воспроизвести это, - изменить его свойство "имя" на нечто иное, чем "страница". Но я думаю, что это не так (большинство пользователей даже не открывают консоль разработчика...)
Я много гугнул, и я проверял все возможности. Подтверждение в порядке:
(Content-Type: application/x-www-form-urlencoded; charset=UTF-8)
Параметры в порядке, AJAX выглядит нормально, все выглядит нормально... Но мы не можем найти, что происходит. Мы пробовали много возможностей, но мы все равно не могли заставить эти исключения произойти.
Одна из гипотез заключается в том, что иногда AJAX может отправлять пустые блоки данных без каких-либо параметров. Но мы даже не знаем, правда это или нет, и как проверить его достоверность.
Каковы возможности? Как это можно проверить?
EDIT: Мы могли бы воспроизвести один из способов получить исключение: перезагрузка страницы несколько раз в течение нескольких секунд (удерживая клавишу перезагрузки нажатой некоторое время). Есть ли способ предотвратить исключение для этого случая?!