2015-06-18 31 views
2

我正在使用Spring MVC和Spring Boot實現Java web應用程序。使用Spring Boot,如何分別處理正常請求和ajax請求之間的異常

我想創建一個自定義錯誤頁面(404,500錯誤),我試圖從這裏使用的解決方案: https://stackoverflow.com/a/27393578/2148445
並能正常工作。但是,它攔截了所有404/500錯誤,即使是我的ajax請求。我的web應用程序基於ajax請求,所以當我調用API時,它會返回自定義錯誤頁面而不是json響應。

我想:
正常請求時>>轉到自定義錯誤頁面。
當ajax請求>>返回錯誤響應作爲json對象。

我試圖尋找其他方式,但我不能得到很好的解決辦法爲止。 我試過使用@ExceptionHandler,但我的同事說它會覆蓋Spring引導的。

有沒有辦法解決這個問題?

謝謝你的幫助。

+0

你可以粘貼你的ajax監聽器類嗎? – chengpohi

+0

我覺得這有點棘手。最好的辦法是創建一個控制器來處理錯誤,向它注入'HttpServletRequest',並根據請求的路徑返回JSON或重定向到錯誤視圖。 –

+1

這似乎是相關的:http://stackoverflow.com/questions/29703903/spring-boot-error-controller-to-handle-either-json-or-html –

回答

0

的溶液。將這樣從瀏覽器AJAX呼叫時發送「X-REQUESTED-WITH」標頭值「的XMLHttpRequest」。

在後端側,您可以檢查,如果這頭與給定值可用來決定它是否是Ajax調用或沒有。