`
pzw_0612
  • 浏览: 6767 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

freeMarker 命名空间

阅读更多

    当运行 FTL 模板时,就会有使用 assign 和 macro 指令创建的变量的集合,像这样的变量集合被称为 namespace 命名空间。在简
单的情况下可以只使用一个命名空间,称之为 main namespace 主命名空间。
    因为通常只使用本页上的命名空间,所以就没有意识到这点。如果想创建可以重复使用的宏,函数和其他变量的集合,通常用术语来说就是引用
library 库。 使用多个命名空间是必然的。只要考虑你在一些项目中,或者想和他人共享使用的时候,你是否有一个很大的宏的集合。 但要确保库中没有宏(或其他变量)名和数据模型中变量同名,而且也不能和模板中引用其他库中的变量同名。 通常来说,变量因为名称冲突也会相互冲突。所以要为每个库中的变量使用不同的命名空间。 废话少说,直奔主题。

 

     为解决这些问题,freeMarker 中有一个内置的import 指令, 不同library 库具有不同的命名空间,以保证相同变量在不同空间上,就有不同的值。

 

比如:namespace_val.ftl 模板 的变量 mail

 

namespace_val.ftl

 

<#macro copyright date>

<p>Copyright (C) ${date} Julia Smith. All rights reserved.
<br>Email: ${mail}</p>
</#macro>
<#assign mail = "jsmith@acme.com">

 

 

namespace_val_cal.ftl

 

<#-- <#import "namespace_val.ftl" as my> -->
<#import "namespace_val.ftl" as my>
<#assign mail="fred@acme.com">
<@my.copyright date="1999-2002"/>
${my.mail}
${mail}

   

   这两个文件中的 mail 变量,由于使用不同的命名空间,以至于不会相互的赋值。

 

另外,需要注意的是,import指令和include指令的区别

 

分享到:
评论

相关推荐

    FreeMarker概述2008

    3. **命名空间**:命名空间支持多个变量命名空间,避免命名冲突,有助于构建和维护宏库。 综上所述,FreeMarker作为一个强大的模板引擎,提供了丰富的模板语言和灵活的数据模型,是Web开发中的有力工具。尽管...

    FreeMarker实例教程,手把手教你FreeMarker的方方面面

    - **命名空间**:讨论了命名空间的概念及其在FreeMarker中的应用。 - **空白处理**:探讨了如何处理模板中的空白字符(如空格、制表符)。 - **替换(方括号)语法**:介绍了一种特殊的语法——方括号语法,可用于在...

    FreeMarker.pdf

    此外,它还提供了命名宏、命名空间以及输出转换功能,方便模板的复用和维护。 在数据模型方面,FreeMarker不是直接操作Java对象,而是通过对象封装器将Java对象转化为模板中的变量。这允许开发者使用抽象的接口,...

    代码生成器必备jar包:Freemarker-2.3.23

    在描述中提到"Freemarker-2.3.23低于2.3没有上面的命名空间",这可能是指在2.3.23之前的Freemarker版本,`TemplateDirectiveModel`可能不在`freemarker.template`包下,或者使用了不同的命名。这可能是为了强调更新...

    freemarker概述

    - **名字空间**: 有助于避免命名冲突,便于管理和重用宏库。 - **通用数据模型**: - **对象封装**: Java对象通过对象封装器在模板中显示,而不是直接映射。 - **抽象表示**: 可以通过抽象方式表示对象,如...

    FreeMarker 手册

    FreeMarker的手册是一个详细的指南,它不仅介绍了FreeMarker的基本概念和使用方法,还深入到了高级主题,如自定义指令、命名空间、空白处理等。通过手册的学习,开发者可以掌握如何创建配置实例、定义数据模型、获取...

    freemarker 中午手册

    - **命名空间支持**:利用命名空间可以有效地管理和复用宏库,同时避免命名冲突。 #### 四、通用数据模型 - **数据封装**:Freemarker 并不直接反映 Java 对象,而是通过插件式对象封装器将 Java 对象转换为模板...

    freemarker中文文档

    - 通过指定不同的命名空间,即使指令或函数具有相同的名称,也可以避免冲突。 ##### 4.4 空白处理 - **空白处理**指的是对模板中的空格、制表符、换行符等空白字符的处理。 - **Freemarker**提供了多种空白处理模式...

    freemarker资料集

    指令用于控制模板的结构和行为,如`include`用于包含其他模板,`import`引入其他命名空间,`assign`分配变量等。 8. **数据模型**: 数据模型是FreeMarker用来获取数据的源,通常是Java对象。开发者可以将Java...

    freemarker中文手册.pdf

    - **名字空间管理**:通过名字空间避免宏名冲突,方便管理和维护大型项目中的宏库。 - **输出转换**:内置多种输出转换功能,如HTML转义、内容压缩等,还可以自定义转换规则。 ##### 3. 通用数据模型 - **对象封装*...

    FreeMarker模板语言API

    - `#import`:导入其他命名空间,方便使用其中的宏或变量。 - `#macro`:定义宏,可以复用一段代码逻辑。 - `#nested`:在嵌套模板中使用,以便处理父模板传递的数据。 3. **模板配置** - `freemarker.template...

    FreeMarker_Manual_zh_CN.pdf

    FreeMarker手册的这部分内容还提到了一些特殊情况下的高级特性,例如自定义指令、模板中的变量定义、命名空间的使用、空白字符的处理、方括号替换语法的使用等。在程序开发指南中,还涵盖了诸如变量处理、字符集问题...

    FreeMarker

    - **命名空间**:支持命名空间的概念,帮助管理复杂的模板体系。 - **替换语法**:使用方括号表示法进行特殊字符的转义等操作。 #### 四、FreeMarker程序开发指南 除了模板语言之外,FreeMarker还提供了丰富的API...

    FreeMarker中文文档

    - 命名空间帮助管理和避免宏之间的名称冲突。 - 输出转换块允许对生成的输出进行处理,如HTML转义、压缩或语法高亮。 3. **通用数据模型**: - FreeMarker不直接操作Java对象,而是通过对象封装插件来暴露数据...

    FreeMarker 中文教程 用于 FreeMarker 2.3.19

    - **命名空间**:介绍了命名空间的概念及其在 FreeMarker 中的应用。 - **空白处理**:解释了如何处理模板中的空白字符。 - **替换(方括号)语法**:介绍了方括号语法的使用方法及其用途。 #### 三、程序开发...

    FreeMarker_Manual_zh_CN

    - **命名空间**:命名空间的使用方法及其在模板中的作用。 - **空白处理**:如何处理模板中的空格和换行等空白字符。 - **替换(方括号)语法**:特殊语法的使用场景和方法。 #### 三、程序开发指南 ##### 1. 程序...

Global site tag (gtag.js) - Google Analytics