当前位置: 首页 > 知识库问答 >
问题:

如何在spring boot上使用ResponseStatusException将错误消息显示到Json中?

南门嘉
2023-03-14

我有一个问题,在一个错误的请求被触发的时刻显示一个错误消息。

@DeleteMapping("/{projectId}/bugs/{bugId}")
public void deleteBug(@PathVariable (value = "projectId") Long projectId,
                      @PathVariable (value = "bugId") Long bugId){
    if (!projectService.existById(projectId) || !bugService.existById(bugId)) {
        throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "ProjectId " + projectId + " or BugId " + bugId + " not found");
    }
    bugService.deleteBug(bugId);
}

这是我触发响应时的JSON响应:

{
"timestamp": "2020-05-29T15:40:41.302+00:00",
"status": 400,
"error": "Bad Request",
"message": "",
"path": "/projects/3/bugs/2"  }

正如您所看到的,消息没有出现。如果更改代码中的HttpStatus,它实际上可以工作,但由于某种原因,消息不工作。

我检查了类的构造函数,它实际上只允许状态和原因。

是我遗漏了什么还是ResponseStatusException类中的bug?

共有1个答案

韩乐湛
2023-03-14

我也遇到过这个。这不是一个bug,所以降级不是最好的解决方案。spring boot 2.3.0版本说明解释:

默认情况下,错误消息和任何绑定错误不再包括在默认错误页中。这降低了向客户端泄露信息的风险。server.error.include-messageserver.error.include-binding-errors可分别用于控制包含消息和绑定错误。支持的值为alwayson-paramnever

因此,例如,在应用程序配置中,可以将这些设置为显示消息而不是跟踪输出(YAML示例):

server:
  error:
    include-message: ALWAYS
    include-stacktrace: NEVER
 类似资料:
  • 我正在尝试用spring显示一个报告PDF,我终于得到了它,但是问题出现在我的代码中有一个异常或错误的时候。在这种情况下,我想在我的应用程序中显示特殊的消息。sping控制器返回一个带有文件pdf的ResponseEntity和一个http状态代码。

  • 这几个月来,我们一直在努力实现这一目标,但现在需要这样做。我需要显示服务器上设置的错误消息,说明出现了什么错误: 服务器endpoint 网状物: 在chrome开发工具中的预览下,我看到消息

  • 问题内容: 如何在Liferay门户中显示错误消息?我在liferay.com网站上阅读了有关显示错误消息的信息,我可以使用标签库中的liferay- ui:error标签,但是它不起作用,如何使用它? 问题答案: 您对“ liferay-ui:error”标记是正确的,因此在JSP上,您将拥有: 然后,在Java代码中,通常将需要RenderRequest或ActionRequest,但是也可以

  • 问题内容: 我正在使用Spring Security。我想显示登录错误消息,例如登录失败或帐户被锁定。如何在登录页面上显示此类消息? 问题答案: 只需配置为,然后从该servlet设置属性即可,例如 并将此请求转发到登录页面。 或提供 如 检查jsp上的参数 并有条件地打印消息

  • 这只是为了漏洞测试的目的 只是为了找到克服XSS攻击的方法 如果textbox字段为空,我将尝试显示错误消息。 但是当我单击submit按钮时,它只在另一个(db_connection.php)页面上显示错误消息,尽管它没有将数据插入到我的数据库中。我希望它在与表单相同的页面上显示错误消息。 这是我的index.php 这是我的db_connection.php

  • 我一直试图在safearea的栏中显示这条警告消息。我必须将此消息显示为错误消息,其中最初的错误消息是空值字符串。错误信息成功出现在终端中,但没有出现在屏幕上。 SharedReferences prefs=等待SharedReference.getInstance(); 这是我的调试控制台 (飞镖:异步补丁/_rootRunUnary: 64)[39;49m[38; 5; 244mE/flutt