如何在 Spring MVC 中针对 HTML 和 JSON 请求以不同方式处理异常

2023-12-31

我在 Spring 4.0.3 中使用以下异常处理程序来拦截异常并向用户显示自定义错误页面:

@ControllerAdvice
public class ExceptionHandlerController
{
    @ExceptionHandler(value = Exception.class)
    public ModelAndView handleError(HttpServletRequest request, Exception e)
    {
        ModelAndView mav = new ModelAndView("/errors/500"));
        mav.addObject("exception", e);
        return mav;
    }
}

但现在我想要对 JSON 请求进行不同的处理,以便在发生异常时获得此类请求的 JSON 错误响应。目前上面的代码也是由 JSON 请求触发的(使用Accept: application/jsonheader)并且 JavaScript 客户端不喜欢 HTML 响应。

如何以不同的方式处理 HTML 和 JSON 请求的异常?


ControllerAdvice 注释有一个名为 basePackage 的元素/属性,可以设置它来确定应该扫描哪些包来查找控制器并应用建议。因此,您可以做的就是将处理普通请求的控制器和处理 AJAX 请求的控制器分离到不同的包中,然后编写 2 个带有适当的 ControllerAdvice 注释的异常处理控制器。例如:

@ControllerAdvice("com.acme.webapp.ajaxcontrollers")
public class AjaxExceptionHandlingController {
...
@ControllerAdvice("com.acme.webapp.controllers")
public class ExceptionHandlingController {
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Spring MVC 中针对 HTML 和 JSON 请求以不同方式处理异常 的相关文章

  • Java - 将节点添加到列表的末尾?

    这是我所拥有的 public class Node Object data Node next Node Object data Node next this data data this next next public Object g
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • 获取 R 中向量每 10 步的平均值[重复]

    这个问题在这里已经有答案了 我有一个值向量 1 0 0 4 1 0 0 1 1 1 0 1 0 0 2 0 0 17 1 2 0 2 0 1 1 1 0 1 1 0 0 0 0 0 33 0 2 0 4 2 0 0 1 1 0 0 0 1
  • Graphite只会显示过去24小时的数据

    以下是过去 24 小时的统计数据显示 在 Graphite Composer 中 以下是 过去 14 天 的统计数据显示 那里没有太大区别 我无法说服 Graphite 显示过去 24 小时内任何时间段的任何数据 以下是来自的相关条目sto
  • Google API Gateway:在标头中提供 API 密钥

    我正在尝试设置 Google API Gateway 以使用调用者在标头中发送的 API 密钥 我的 api 配置 yaml 如下所示 securityDefinitions api key header type apiKey name
  • PyLint 无法识别 cv2 成员

    我正在 opencv 项目上运行 pylint 并且在 VS 代码中收到许多有关成员不存在的 pylint 错误 示例代码 import cv2 cv2 imshow 得到的错误 不过 代码运行正确 没有任何错误 版本 pylint 1 8
  • GIT Xcode - 更改原点

    如何更改 GIT 存储库中的原始 url 我不想添加新的存储库 我想换旧的 请帮帮我 我找到了添加新选项但不更改现有选项的选项 Thanks 我认为你不能从 XCode4 中做到这一点 就像许多其他事情一样 Do git remote se
  • 使用下拉菜单创建虚线图

    您好 我有一个 excel 文件 如下所示 其中有三个不同的服务器 A B C 我正在尝试构建一个带有下拉菜单的仪表板应用程序 可以选择所需的服务器并显示每个服务器的 CPU 使用情况和内存使用情况的图表 我尝试从 Dash 官方网站修改以
  • 使用按钮清除多选(角primeng涡轮表)

    是否可以通过按钮远程清除多选 或多个多选 我正在使用 primeng multiselect 和 Turbo table 我已经多次看到这个问题 但没有选择答案 以下是我的多选 span span
  • 如何在yii2中进行ajax调用?

    在 yii 1 14 版本中我们使用 CHtml ajax链接 对于 ajax 调用 在 yii2 中怎么样 你可以像这样创建一个ajax链接 Html a Your Link name controller action title gt
  • 缺少带有 .otf 的内容类型标头字体

    我使用 Laravel 框架 但是在 chrome 控制台中发生了这个错误并且font family不工作 无法加载资源 服务器响应状态为 500 缺少 Content Type 标头 In css font face font famil
  • 使用 PyDrive 上传 XLSX 并将其转换为 Google Sheets

    我正在尝试将 xlsx 文件上传到 Google 云端硬盘 我可以上传它 但是 当我们尝试在云端硬盘中打开同一文件时 必须使用 Google 表格打开它 因此 它会创建一个同名的新文件并消耗驱动器空间 我想我需要在上传时更改 MimeTyp
  • 不同IPC机制的使用

    我是一名 C 程序员 我想知道一个实时场景 我们可以使用不同的 IPC 机制 例如 PIPE 命名 共享内存 我大致知道在哪里可以使用套接字和消息队列 但对于 PIPE Named PIPE 和共享内存我没有任何想法 这只是为了了解不同的
  • 如何将elasticquery转换为kibana URL

    我正在使用 kibana 6 仪表板来显示可视化 我有一个如下所示的弹性查询 它需要传入 kibana 仪表板 URL query bool minimum should match 1 should match phrase jt tax
  • 带 VCL 样式的 Inno Setup 语言选择器

    有没有办法将语言选择器 Inno Setup 与VCL样式一起使用 如何 出现 选择安装语言 对话框之前叫做 因此您无法加载对话框的皮肤 作为解决方法 您可以实现自己的 语言 对话框 并从InitializeSetup 这样自定义对话框就会
  • 使用带条件的内连接的 Doctrine 查询生成器

    我想使用 Doctrine 的查询构建器构建以下 SQL select c from customer c join phone p on p customer id c id and p phone phone where c usern
  • SQL 查询用于在 SQL Server 中生成类似输出查询相关表的矩阵

    我有三张桌子 Product ProductID ProductName 1 Cycle 2 Scooter 3 Car Customer CustomerID CustomerName 101 Ronald 102 Michelle 10
  • MySql - 更新字符串部分的方法?

    我正在寻找一种通过 MySQL 查询仅更新字符串的一部分的方法 例如 如果我有 10 条记录 全部包含string作为字段值的一部分 有没有办法改变string to anothervalue通过一个查询对每一行进行查询 IE 对于以下情况
  • 尝试创建 Android 应用程序时出现“无可用目标”该怎么办?

    我正在尝试使用 Eclipse 创建 Android 项目 但 新建 Android 项目 窗口中的 下一步 按钮呈灰色 构建目标部分显示消息 无目标可用 我已经填写了其他所有内容 我还需要准备其他东西才能使其发挥作用吗 您是否确保将and
  • VBA将Excel图表复制到Word作为图片更改图表大小

    我想创建一个宏 从 Excel 复制图表并将其作为图片 最好是增强型图元文件 粘贴到 Word 中 我设置了一个带有表格的 Word 模板文档 该表格在应插入图片的特定单元格中包含书签 然而 使用我当前的代码 插入的图像太大并且弄乱了整个表
  • 前端敏感信息

    我正在构建我的第一个反应应用程序 不确定前端安全性 我正在调用以下第三方库 emailjs sendForm serviceID templateID templateParams userID userId字段属于敏感信息 我对 onSu
  • 如何在 Spring MVC 中针对 HTML 和 JSON 请求以不同方式处理异常

    我在 Spring 4 0 3 中使用以下异常处理程序来拦截异常并向用户显示自定义错误页面 ControllerAdvice public class ExceptionHandlerController ExceptionHandler