Spring引导中的Freemarker模板渲染错误返回200 OK

时间:2018-05-07 17:41:17

标签: spring spring-boot freemarker

我希望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

0 个答案:

没有答案