SpringMVC的Freemarker模板異常配置

jopen 10年前發布 | 59K 次閱讀 SpringMVC Spring MVC Web框架

1、spring mvc的異常配置

    spring mvc 提供了SimpleMappingExceptionResolver來處理異常,這里的只是由web 請求,經由controller引發的異常,無法處理freemarker的異常

 

2、freemarker自定義異常

/**
 * freemarker頁面上的異常控制
 * 在webmvc-config.xml里面的freemarkerSettings里頭配置
 * @author scipio
 * @created 2014-02-01
 */
public class FreemarkerExceptionHandler implements TemplateExceptionHandler {
    private static final Logger log = LoggerFactory
            .getLogger(FreemarkerExceptionHandler.class);

    public void handleTemplateException(TemplateException te, Environment env,
                                        Writer out) throws TemplateException {

            log.warn("[Freemarker Error: " + te.getMessage() + "]");
            throw new ViewException("freemarker error",te);
    }
}

 

  這里重新包裝異常拋出(這種方式要求比較嚴格,因為freemarker對個別的錯誤,比如某個變量沒有定義,可以忽略,只是后臺拋異常,然后整個頁面還是會渲染出來)

 

3、配置HtmlFreeMarkerConfigurer

 <bean id="freemarkerConfig" class="com.sankuai.meituan.mtct.web.HtmlFreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/WEB-INF/views/"/>
        <property name="freemarkerSettings">
            <props>
                <prop key="template_update_delay">0</prop>
                <prop key="default_encoding">UTF-8</prop>
                <prop key="locale">zh_CN</prop>
                <prop key="url_escaping_charset">UTF-8</prop>
                <prop key="whitespace_stripping">true</prop>
                <prop key="number_format">#</prop>
                <!-- 配置自定義的freemarker異常處理-->
                <prop key = "template_exception_handler">com.persia.exception.FreemarkerExceptionHandler</prop>
            </props>
        </property>
    </bean>

 

4、針對該異常,配置web.xml

 

<!--配置freemarker異常-->
    <error-page>
        <exception-type>com.persia.exception.ViewException</exception-type>
        <location>/WEB-INF/views/error/viewException.ftl</location>
    </error-page>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!