java - 如何将消息从 HttpServletResponse.sendError(status, msg) 传递到 Controller ?

标签 java spring

这是当前的java(1.8)spring调用堆栈,

  1. 拦截器

    preHandle(HttpServletRequest request, HttpServletResponse response) { response.sendError(403) }

  2. web.xml

    <error-page> <error-code>403</error-code> <location>/error/forbidden</location> </error-page>

  3. 错误 Controller

    @RequestMapping(value="/error/forbidden") public ModelAndView forbidden () { // display fixed message "forbidden" in the web browser }

现在在拦截器中,我想发回自定义消息, preHandle(HttpServletRequest, HttpServletResponse) { response.sendError(403, "my msg") }

Controller 更改为

`@RequestMapping(value="/error/forbidden")
public ModelAndView forbidden (HttpServletRequest request, HttpServletResponse response)`

问题是,当我调试 Controller 代码时,我还无法从响应对象中找到“我的消息”。

问题1:我的做法正确吗?

问题2:如果是这样,回复中的“我的消息”在哪里?如果没有,正确的方法是什么?

最佳答案

如果您想从拦截器的 preHandle 方法发送自定义消息作为响应,请尝试以下代码

response.setStatus(403);
response.getWriter().write("my msg");

关于java - 如何将消息从 HttpServletResponse.sendError(status, msg) 传递到 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59222770/

相关文章:

java - 基于图像添加楼层或如何优化现有方法

java - 获取 hadoop 中已完成和退役作业的详细信息

java - @cacheable 不适用于 Spring Boot。使用ehcache3

java - 如何在 Spring Data rest 中返回 List<String> 或 String

java - 使用 %f %s(我认为是 Java 7 格式化程序)类型表示法格式化日期

Spring Security 和嵌套的 FilterChainProxy 编写 SAML 服务提供者

java - 如何在 Spring applicationContext.xml 中读取 JVM 参数

java - 对于参数化类来说,使用类(而不是接口(interface))作为类型是一种不好的做法吗?

java - 如何保留 OkHttp 中密码套件列表的顺序?

java - Apache Beam 从 GCS 读取 Avro 文件并写入 BigQuery