我有一個問題,最終發生在我的網站。它使用AJAX請求從服務器獲取數據,該服務器使用Spring MVC。Spring MVC - RequestParamException參數不存在
會發生什麼(間歇)是,有時我們得到這樣一個例外:
org.springframework.web.bind.MissingServletRequestParameterException: Required Integer parameter 'page' is not present
at
這種異常在一些AJAX POST通話時(不只是對於這種情況!)我們仍然無法重現它來了解發生的事情。
例如,在的情況下,參數「頁」一(用於加載而用戶滾動內容的頁面 - 所以這是一個所需的變量)被通過AJAX呼叫具有「數據發送「與頁面參數從表單來的這樣的領域:
<input type="hidden" name="page" id="page" value="1">
而一個Ajax調用像這一個(兩個$( 」#過濾器「)和網址都OK):
$.ajax({
type: "POST",
data: $("#filter").serialize(), // serializes the form's elements.
url: _ctx + URL_FILTER,
cache: false
})
我們得到了重現的唯一方法是通過改變其屬性「名稱」比「頁」以外的東西。但我想這不是這種情況(大多數用戶甚至不打開開發者控制檯...)
我已經GOOGLE了很多,我檢查了每一種可能性。該enconding是確定的:
(Content-Type: application/x-www-form-urlencoded; charset=UTF-8)
的參數確定,AJAX看起來不錯,一切似乎都OK了...但是我們找不到是怎麼回事。我們嘗試了很多可能性,但我們仍然無法強制這些例外發生。
我們的一個假設是,有時AJAX可能會發送空數據塊,而沒有任何參數。但我們甚至不知道它是否屬實,以及如何檢查其準確性。
有什麼可能性?如何進行測試?
編輯: 我們可以複製的方法來獲得一個例外:反覆重新加載網頁幾秒鐘(按下了一陣重裝鍵)。有沒有辦法來防止這種情況下的例外?
你能記錄在服務器上收到的HTTP請求嗎?它可能有助於診斷問題。 –
你可以顯示你如何在控制器中定義你的方法,在我看來你是把參數頁作爲強制性的 – jstuartmilne
@Sudakatux參數**有**是強制性的,這就是問題所在!每次執行AJAX調用時,它都應該在那裏。蓋爾我不確定。我應該如何記錄服務器上收到的HTTP請求?問題是我不知道我是否可以爲每個HTTP請求生成一個日誌文件(例如來自這個特定的Ajax調用),因爲它每小時會有100.000個條目......而且可能只有0.001%我是一個例外 –