我希望Freemarker模板错误以状态500响应,从而使Spring呈现内部服务器错误的默认错误页面。但无论我如何尝试配置Freemaker template_exception_handler
,响应都不会是500。
默认异常处理程序方法是DEBUG
,它会在错误模板中生成消息/堆栈跟踪,而其余模板(直到错误)将被呈现。
将处理程序设置为RETHROW
会隐藏消息/堆栈跟踪,但会导致部分呈现模板。
将处理程序设置为IGNORE
会在无法解析的完整跳过字段中呈现模板。
以上所有内容都会引发服务器上可见的异常。调试弹簧BasicErrorController
处理异常 - 但是BasicErrorController的响应仍然是状态200。
我尝试实现自己的ErrorHandlingController,它基本上只映射到/error
并呈现状态为500的ModelAndView。仍然是响应是200并且渲染模板。
根据this回答,解决方案是将模板异常处理程序配置设置为RETRHOW
- 但如上所述,这不会提供预期的结果。
我现在正在拍摄空白,不知道还有什么可以尝试。有什么建议吗?
期望的结果:当渲染抛出TemplateException时,Spring应该响应内部服务器错误HTTP状态代码500并为此呈现我的错误页面。 (顺便说一句,这适用于后端发生的任何其他类型的异常......)
Spring boot版本:2.0.1.RELEASE
Spring版本:5.0.5.RELEASE