SSH2处理方案:

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

 
1
<constant name="struts.freemarker.manager.classname" value="net.swiftlet.freemarker.MyFreemarkerManager" />

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

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class MyFreemarkerManager extends org.apache.struts2.views.freemarker.FreemarkerManager
{
    private static final Logger LOG = LoggerFactory.getLogger(MyFreemarkerManager.class);
    public void init(ServletContext servletContext) throws TemplateException
    {
        config = createConfiguration(servletContext);
        config.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
        contentType = DEFAULT_CONTENT_TYPE;
 
        wrapper = createObjectWrapper(servletContext);
        if (LOG.isDebugEnabled())
        {
            LOG.debug("Using object wrapper of class " + wrapper.getClass().getName());
        }
        config.setObjectWrapper(wrapper);
        templatePath = servletContext.getInitParameter(INITPARAM_TEMPLATE_PATH);
        if (templatePath == null)
        {
            templatePath = servletContext.getInitParameter("templatePath");
        }
        configureTemplateLoader(createTemplateLoader(servletContext, templatePath));
        loadSettings(servletContext);
    }
}
 

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>
 

freemarker 异常处理的更多相关文章

  1. freemarker中的null异常处理以及!与??的使用(转)

    原文链接: https://blog.csdn.net/mexican_jacky/article/details/50638062 阅读数:6304 如工程包含: 在user中我们有个角色,那么我们 ...

  2. 使用freemarker生成word,步骤详解并奉上源代码

    1.   步骤 1.    用word编辑好模板 1. 普通字符串替换为 ${string} 2. 表格循环用标签 <#list userList as user> 姓名:${user.u ...

  3. Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker)

    Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker) 一.准备工作 1.Eclipse Java EE IDE(4.4.1) 2.JDK 3.Tomc ...

  4. freemarker的TemplateExceptionHandler使用

    系统使用freemarker作为页面展示层,为了解决系统统一异常的问题.于是配置了struts2的统一异常解决的方法(这个网上资料非常多,大家能够查看),但是发现freemarker出现异常后,str ...

  5. Spring Boot 中关于自定义异常处理的套路!

    在 Spring Boot 项目中 ,异常统一处理,可以使用 Spring 中 @ControllerAdvice 来统一处理,也可以自己来定义异常处理方案.Spring Boot 中,对异常的处理有 ...

  6. spring boot ----> 常用模板freemarker和thymeleaf

    ===========================freemarker=================================== freemarker 官网:https://freem ...

  7. FreeMarker自定义TemplateDirectiveModel

    [参考:http://blog.csdn.net/fangzhangsc2006/article/details/8687371] 在采用FreeMarker做前台视图模板的情况下,我们可以通过< ...

  8. 关于FreeMarker自定义TemplateDirectiveModel

    [转载来源:http://zwllxs.iteye.com/blog/2036826] java代码如下: import freemarker.core.Environment; import fre ...

  9. freeMarker(八)——程序开发指南之配置(Configuration)

    学习笔记,选自freeMarker中文文档,译自 Email: ddekany at users.sourceforge.net 1.基本内容 配置(configuration)就是 freemark ...

随机推荐

  1. Ajax工作原理及实例

    1.关于ajax的名字 ajax 的全称是Asynchronous JavaScript and XML,其中,Asynchronous 是异步的意思,它有别于传统web开发中采用的同步的方式. 2. ...

  2. codeblocks在进行多线程出现phread问题

    undefined reference to 'pthread_create' 出现这个错误是因为编译默认不会链接进程库. 可以选择用gcc进行编译 加上-lpthread 比如:gcc exampl ...

  3. 玩点不同之CSS的BEM规范

    1.BEM引入背景 因为项目的业务逻辑发生重大变化,所以原来大半年的开发周期里做的事情基本上变成无用功.但是公司的项目上线时间依旧没有改变.剩下的时间只有区区的两个月,要做的功能是有社区+电商+核心业 ...

  4. c#实现一个打砖块游戏step by step---开篇

    一 引子 为了让更多的编程初学者,轻松愉快地掌握面向对象的思考方法,对象继承和多态的妙用,故推出此系列随笔,还望大家多多支持. 二 游戏截图与说明 1. 游戏截图 2. 游戏说明: 蓝色砖块砖块为普通 ...

  5. poj1840

    Eqs Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 15133   Accepted: 7426 Description ...

  6. C#通过反射打开相应窗体方法

    C#单击菜单栏或工具栏时通过反射打开窗体的方法,可以以取代长长的if-else或switch-case语句.要点:将菜单或工具栏项的名称设置为与相应窗体名称相同(关键). private void M ...

  7. [转载]移动页面所需meta元素和Viewport窗口知识点

    Meta标签 vs  Viewport http://www.2cto.com/kf/201409/335779.html http://blog.csdn.net/freshlover/articl ...

  8. JS基础知识简介

    使用js的三种方式 1.HTML标签内嵌js <button onclick="javascript:alert(真点啊)">有本事点我</button> ...

  9. tomcat部署jenkins启动报错:insufficient free space available after evicting expired cache entries-consider increasing the maximum size of the cache.

    在tomcat里面部署jenkins,启动tomcat,在jenkins上操作不久之后,jenkins就挂掉了,查看tomcat控制台,报内存溢出信息: 解决该问题方法,修改tomcat/bin目录下 ...

  10. (4.9)SQL Server如何校验备份文件

    译 SQL Server如何校验备份文件 转自:https://blog.csdn.net/tjvictor/article/details/5261666 RESTORE VERIFYONLY与 c ...