`
yinhumy
  • 浏览: 31164 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

freemarker 异常和错误显示

阅读更多


当使用 FreeMarker 做为模版引擎的时候,可能发生的异常包括:

配置异常:配置异常指的是 FreeMarker 初始化时发生的异常,例如错误的配置导致,该异常时由 FreeMarker 的 API 抛出来的。

模版加载异常:模版加载异常可能是模版不存在或者没有读权限,或者是解析模版时发生错误,例如模版语法错误等。

模版执行异常:模版执行异常是指模版已经成功的加载但在执行过程中由于代码执行错误所抛出的异常,这类异常一般都是用户的代码导致。

正常情况下,前两种异常会在开发过程中就会发现并得以解决,而第三种异常往往跟实际的运行环境和数据有关,例如由于某些数据不存在导致的空指针异常等等。因此第三种异常才是我们真正需要关心以及监控的。

为此,FreeMarker 定义了一个统一的异常处理接口 TemplateExceptionHandler 。该接口只有一个方法如下:

void handleTemplateException(TemplateException te,
    Environment env,
    java.io.Writer out)
 


通过调用 cfg.setTemplateExceptionHandler 来使用自定义的异常处理方法。下面是一个简单的异常处理扩展的例子:


清单 8. 异常处理扩展的例子
    
class MyTemplateExceptionHandler implements TemplateExceptionHandler {
   
    public void handleTemplateException(TemplateException te,
        Environment env, java.io.Writer out)
  throws TemplateException {
        try {
            out.write("[ERROR: " + te.getMessage() + "]");
        } catch (IOException e) {
            throw new TemplateException(
                "Failed to print error message. Cause: " + e, env);
        }
    }
   
}

...

cfg.setTemplateExceptionHandler(new MyTemplateExceptionHandler());

如过不想把报错信息显示在页面上操作如下:
1.在classpath目录下建立freemarker.properties
2.配置如下:template_exception_handler=ignore

1
0
分享到:
评论

相关推荐

    Freemarker之BooleanModel错误

    在本文中,我们将深入探讨一个常见的问题,即“Freemarker之BooleanModel错误”,以及如何解决这个问题。 问题的核心在于FreeMarker尝试将一个`BooleanModel`对象转换为字符串、日期或数字,但模板引擎期望的是这些...

    Struts2 和freemarker实例

    7. **错误和异常处理**:配置Struts2的全局异常处理,当出现错误或异常时,如何跳转到特定页面展示错误信息。 8. **拦截器的使用**:创建自定义拦截器,实现日志记录、权限检查等附加功能。 9. **Struts2插件**:...

    struts2+freemarker

    6. **错误和异常处理**:Struts2提供了一套完善的异常处理机制,可以在发生错误时跳转到特定的错误页面,同时Freemarker也支持在模板中处理错误。 7. **国际化与本地化**:Struts2和Freemarker都支持多语言环境,...

    freemarker\Freemarker教程_中文版

    Freemarker支持直接访问这些对象的属性和方法,使得模版能够灵活地显示数据。 ```java Map, Object> dataModel = new HashMap(); dataModel.put("username", "John Doe"); dataModel.put("products", Arrays.asList...

    freemarker操作手册-完整freemarker教程

    - 错误处理:捕获和处理Freemarker执行时的异常。 - 调试:开启调试模式,查看模板变量的值和执行过程。 9. **集成到Java Web应用** - 使用Servlet容器的Freemarker配置。 - 创建和解析模板的Java代码示例。 -...

    freemarker与Struts2.0的dome

    - 当Freemarker模板中出现错误时,Struts2会捕获异常并提供相应的错误页面,这可以通过配置`<struts>`标签内的`<global-results>`和`<global-exception-mappings>`进行设置。 8. **性能优化** - Freemarker提供了...

    freemarker教程

    本教程将深入讲解Freemarker的核心概念和实践技巧。 一、Freemarker基础 1. 模板语法:Freemarker的模板语言由简单的文本和特殊的指令组成。例如,`${expression}`用于插入变量值,`<#if condition>`和`<#else>`...

    freemarker的shiro标签

    9. **错误处理**:在模板中使用Shiro标签时,要注意异常处理。当用户权限不足或未登录时,应该给出友好的提示,而不是让页面出现错误信息。 10. **最佳实践**:在实际项目中,合理规划权限结构和角色分配,避免过度...

    jdk1.8下可以使用的freemarker.jar

    - 使用FreeMarker的API来处理异常,提供友好的错误提示。 总结,`freemarker.jar`在Java 8环境下的使用,意味着开发者可以借助其强大的模板语言和Java 8的特性,高效地构建动态内容生成系统,同时保持代码的清晰性...

    freemarker官方中文帮助文档

    9. **错误和异常处理**:通过`<#try>`、`<#catch>`进行错误捕获和处理,确保模板在数据异常时仍能优雅地显示。 10. **国际化与本地化**:Freemarker支持i18n,可以通过`<#t>`标签和`locale`属性来切换不同的语言...

    FreeMarker入门指南API文档(中文版)

    FreeMarker会在遇到错误时抛出异常,如模板语法错误、数据模型缺失等。你应该捕获这些异常,并提供有意义的错误信息给用户。 总之,FreeMarker提供了一种强大的方式来生成动态内容,通过理解其基本语法和API,你...

    FreeMarker模板语言API

    - `TemplateException`:FreeMarker在处理模板时抛出的异常,通常由语法错误或数据模型问题引起。 - `TemplateProcessingException`:在模板处理过程中发生的异常,通常涉及数据模型的访问。 6. **最佳实践** - ...

    Struts2整合Freemarker生成静态页面

    9. **错误和异常处理**:Struts2和Freemarker都有自己的错误处理机制。当模板或Action执行出错时,可以通过配置错误页面来展示错误信息。 10. **最佳实践**:在实际项目中,应遵循良好的编程习惯,如保持模板简洁,...

    freemarker入门文档

    当模板执行出错时,Freemarker可以配置不同的错误处理策略,如抛出异常、返回默认值或显示错误页面。 9. **模板调试** 提供了详细的日志输出和在线调试工具,帮助开发者定位和解决问题。 10. **最佳实践** - ...

    Text_FreeMarker

    开发者可以通过配置来决定如何处理这些异常,例如是否显示详细的错误信息。 7. **国际化和本地化**:FreeMarker支持多语言环境,可以使用资源包(ResourceBundles)来实现文本的国际化和本地化。 8. **安全性**:...

    FreeMarker中文版文档2

    - **错误处理**:配置错误报告级别,处理模板执行过程中的异常。 - **国际化与本地化**:支持多语言环境,通过不同locale切换模板。 5. **最佳实践** - 模板与业务逻辑分离:避免在模板中写入复杂的逻辑,保持...

    Freemarker 教程

    3. **错误处理**:合理设置Freemarker的错误处理策略,如是否显示异常信息,以保证生产环境的安全性。 六、学习资源 1. **官方文档**:Apache Freemarker官网提供了详尽的API文档和用户指南。 2. **实战项目**:...

    FreeMarker_Manual_zh_CN.rar_freemarker

    FreeMarker会自动处理类型转换和异常处理,确保变量能够正确显示。 4. **指令(Directives)**:FreeMarker提供了一系列内置指令,如`#if`、`#foreach`、`#include`等,用于控制模板的逻辑流程和组合其他模板。 5. *...

    FreeMarker笔记1

    在模板中显示提示信息,可以通过占位符配合数据模型中的错误信息: ```freemarker 提示信息:${errorMessage?default("无错误信息")} ``` ### 11. 宏定义 宏是一种可重用的代码块,使用`<#macro>`定义,`...

Global site tag (gtag.js) - Google Analytics