【问题标题】:Send a jsp response along with status code in Spring REST在 Spring REST 中发送 jsp 响应以及状态码
【发布时间】:2018-07-02 14:11:34
【问题描述】:

我想发送一个 jsp 错误页面以及 HTTP 状态代码。我尝试了下面的代码,但它只显示字符串而不是 index.jsp 页面:

    @ExceptionHandler(Exception.class)
public ResponseEntity handleException(HttpServletRequest req, Exception e)
{

    return new ResponseEntity("index.jsp",HttpStatus.NOT_FOUND);

}

谁能解释一下这是怎么做到的?

编辑:我尝试了 modelandview 方法,但不是 404 作为状态代码,而是显示 200 OK 状态代码。

【问题讨论】:

  • 我已经更新了编辑 1 部分...你试过了吗...
  • 是的,我试过了..但状态仍然是 200 OK。似乎状态是模型和视图的属性之一,而不是通常的“状态”。我必须从响应中提取它,因为它不能独立使用。

标签: java spring rest spring-restcontroller


【解决方案1】:

ResponseEntity 将始终返回 Object。在你的情况下String

ResponseEntity("index.jsp",HttpStatus.NOT_FOUND);

要加载特定的jsp页面,您可以使用ModelAndView。 您还可以将附加信息传递给 ModelView,这很方便。

@ExceptionHandler(Exception.class)
public ModelAndView handleError(HttpServletRequest req, Exception ex) {
    ModelAndView mav = new ModelAndView();
    mav.addObject("url", req.getRequestURL());  //  Can read this in JSP by getting url
    mav.setViewName("index"); // calls index.jsp
    return mav;
}

编辑 1:

mav.setStatus(HttpStatus.NOT_FOUND);

【讨论】:

  • 如何将状态码与 jsp 页面一起发送?
  • 我试过上面的代码。我正在获取 jsp 页面,但状态码是 200 而不是 404。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-31
  • 2016-12-18
  • 2014-12-30
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
相关资源
最近更新 更多