如何从HttpServletResponse.sendError(status,msg)传递消息到控制器?

时间:2019-12-07 03:37:37

标签: 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. errorController

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

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

控制器更改为

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

问题是,当我调试控制器代码时,我还无法从响应obj中找到“我的味精”。

Q1:我做对了吗?

Q2:如果是,响应中“ my msg”在哪里?如果没有,请问正确的方法是什么?

1 个答案:

答案 0 :(得分:0)

如果要通过Interceptor的preHandle方法发送自定义消息,请尝试以下代码

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