Spring MVC的Freemarker模板错误处理 [英] Freemarker template error handling with Spring MVC

查看:251
本文介绍了Spring MVC的Freemarker模板错误处理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Spring MVC中使用Freemarker模板.如果呈现模板时发生任何错误,是否可以返回HTTP Status 500?

I am using Freemarker template with Spring MVC. Is there a way to return HTTP Status 500 if there is any error rendering the template?

当前,我正在使用尝试块来处理错误,但想抛出内部服务器错误并允许Web服务器重定向到默认错误页面

Currently I am using attempt block to handle error, but would like to throw Internal Server error and allow web server to redirect to a default error page

<#attempt>
  attempt block
<#recover>
  recover block
</#attempt>

下面是我的 servlet-context.xml

Below is my servlet-context.xml

<beans:bean id="viewResolver"
    class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <beans:property name="cache" value="true" />
    <beans:property name="prefix" value="" />
    <beans:property name="contentType" value="text/html; charset=UTF-8" />
    <beans:property name="suffix" value=".ftl" />
    <beans:property name="exposeSessionAttributes" value="true" />
</beans:bean>

推荐答案

在servlet-context.xml中进行以下更改解决了该问题.现在它会引发HTTP 500错误,该错误会被Web服务器拦截,并且我能够通过重定向到预定义的错误页面来处理该消息.

Below change in servlet-context.xml resolved the issue. Now it throws HTTP 500 error which is intercepted by web server and I am able to mast the message by redirecting to pre-defined error page.

<beans:bean id="freemarkerConfig"
        class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <beans:property name="templateLoaderPath" value="/WEB-INF/ftl/" />
        <beans:property name="freemarkerSettings">
            <beans:props>
                <beans:prop key="template_exception_handler">rethrow</beans:prop>
            </beans:props>
        </beans:property>
    </beans:bean>

这篇关于Spring MVC的Freemarker模板错误处理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆