使用Spring Boot,如何分别处理普通请求和ajax请求的异常

Posted

技术标签:

【中文标题】使用Spring Boot,如何分别处理普通请求和ajax请求的异常【英文标题】:Using Spring Boot, how to separately handle exception between normal request and ajax request 【发布时间】:2015-09-03 18:02:07 【问题描述】:

我正在使用 Spring MVC 和 Spring Boot 实现 Java Web 应用程序。

我想创建一个自定义错误页面(对于 404、500 错误),我尝试使用此处的解决方案: https://***.com/a/27393578/2148445 它工作正常。但是,它拦截了所有 404/500 错误,甚至是我的 ajax 请求。我的 Web 应用程序基于 ajax 请求,所以当我调用 API 时,它返回自定义错误页面而不是 json 响应。

我想: 正常请求时>>转到自定义错误页面。 当ajax请求>>返回错误响应为json对象。

我尝试找到其他方法,但到目前为止我无法找到好的解决方案。 我尝试使用@ExceptionHandler,但我的同事说它会覆盖Spring boot。

有没有办法解决这个问题?

感谢您的帮助。

【问题讨论】:

你能粘贴你的ajax监听类吗? 我觉得这有点棘手。您可以采取的最佳方法是创建一个控制器来处理错误,将HttpServletRequest 注入其中并根据请求的路径返回 JSON 或重定向到错误视图。 这似乎是相关的:***.com/questions/29703903/… 【参考方案1】:

一种解决方案是在从浏览器进行 ajax 调用时发送一个值为“XMLHttpRequest”的“X-REQUESTED-WITH”标头。

在后端,您可以检查具有给定值的此标头是否可用于确定它是否是 ajax 调用。

【讨论】:

以上是关于使用Spring Boot,如何分别处理普通请求和ajax请求的异常的主要内容,如果未能解决你的问题,请参考以下文章

有很多类来分别处理每个命令会落后于我的电脑吗? [关闭]

WPF ListBoxItem双击单击事件分别处理

runloop中的source0和source1分别处理啥时间

如何处理 Spring Boot、AngularJS 应用程序中的 CORS 错误?

如何理解Spring Boot中的Starter?

在单个 Spark 提交作业中分别处理多个文件