• freemarker 异常处理


    SSH2处理方案:

    freemarker文件如果出错,网站的前台页面会报出很明显的错误-焦黄的背景,血红的文字,很不利于用户体验的。如何修改这个问题呢?
    首先需要在struts.xml配置文件里添加下面一行代码:

    接着新建MyFreemarkerManager类,如下所示:

     
     

    SpringMVC-Freemarker异常配置

    1、spring mvc的异常配置

        spring mvc 提供了SimpleMappingExceptionResolver来处理异常,这里的只是由web 请求,经由controller引发的异常,无法处理freemarker的异常

    2、freemarker自定义异常

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    /**
     * 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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
            <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

    1
    2
    3
    4
    5
    <!--配置freemarker异常-->
        <error-page>
            <exception-type>com.persia.exception.ViewException</exception-type>
            <location>/WEB-INF/views/error/viewException.ftl</location>
        </error-page>
     
  • 相关阅读:
    Mybatis异常There is no getter for property named 'XXX' in 'class java.lang.String'
    js javascript 容错处理代码屏蔽js错误
    springmvc访问项目默认先访问后台再返回首页
    杂记-格式化Date默认格式,日期加一天,jstl判断字符类型,ajax模拟from表单后台跳转页面,jstl访问数据库并在页面显示
    测试覆盖率工具EclEmma安装与使用
    GSON使用之对特殊字符的转换的处理
    eclipse启动自己添加的tomcat时tomcat的webapps下没有项目
    接口和抽象类
    枚举
    Java异常
  • 原文地址:https://www.cnblogs.com/cz-xjw/p/4987232.html
Copyright © 2020-2023  润新知