使用ModelAndView返回简单文本字符串

时间:2017-11-07 15:03:28

标签: spring spring-mvc spring-boot

如何返回如下所示的简单文本字符串,基本上我想在浏览器中显示错误的简单文本。

我在这里处理我的错误,在这里我想这样做:

@ExceptionHandler(Exception.class)
public ModelAndView handleAllException(Exception e) {

}

问题是我必须返回一个ModelAndView。如何将简单文本返回给浏览器,不想使用任何JSP等。

只需按照以下或类似方式返回:

return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage());

例如,这不起作用:

return new ModelAndView((View) ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage()));

2 个答案:

答案 0 :(得分:2)

来自@ExceptionHandler documentation

  

允许使用此注释注释的处理程序方法   拥有非常灵活的签名。他们可能有参数   以下类型,按任意顺序:[...] OutputStream / Writer for   生成响应的内容。这将是原始的   Servlet API公开的OutputStream / Writer。 [...]

因此,您可以定义一个类似于此的异常处理方法:

@ExceptionHandler(Exception.class)
public void handleAllException(Exception e, Writer responseWriter) {
  responseWriter.write(e.getMessage());
}

显然,你可以做一些更复杂的事情来格式化错误信息,但这是基本的想法。

答案 1 :(得分:-1)

你可以这样做:

public ModelAndView handleAllException(Exception e) {
    ModelAndView mav = new ModelAndView("your_jsp_name");
    modelAndView.addObject("name", "Peter");
    ...
    return mav;
}