当运行 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.
|
namespace_val_cal.ftl
<#-- <#import "namespace_val.ftl" as my> --> |
这两个文件中的 mail 变量,由于使用不同的命名空间,以至于不会相互的赋值。
另外,需要注意的是,import指令和include指令的区别
相关推荐
3. **命名空间**:命名空间支持多个变量命名空间,避免命名冲突,有助于构建和维护宏库。 综上所述,FreeMarker作为一个强大的模板引擎,提供了丰富的模板语言和灵活的数据模型,是Web开发中的有力工具。尽管...
- **命名空间**:讨论了命名空间的概念及其在FreeMarker中的应用。 - **空白处理**:探讨了如何处理模板中的空白字符(如空格、制表符)。 - **替换(方括号)语法**:介绍了一种特殊的语法——方括号语法,可用于在...
此外,它还提供了命名宏、命名空间以及输出转换功能,方便模板的复用和维护。 在数据模型方面,FreeMarker不是直接操作Java对象,而是通过对象封装器将Java对象转化为模板中的变量。这允许开发者使用抽象的接口,...
在描述中提到"Freemarker-2.3.23低于2.3没有上面的命名空间",这可能是指在2.3.23之前的Freemarker版本,`TemplateDirectiveModel`可能不在`freemarker.template`包下,或者使用了不同的命名。这可能是为了强调更新...
- **名字空间**: 有助于避免命名冲突,便于管理和重用宏库。 - **通用数据模型**: - **对象封装**: Java对象通过对象封装器在模板中显示,而不是直接映射。 - **抽象表示**: 可以通过抽象方式表示对象,如...
FreeMarker的手册是一个详细的指南,它不仅介绍了FreeMarker的基本概念和使用方法,还深入到了高级主题,如自定义指令、命名空间、空白处理等。通过手册的学习,开发者可以掌握如何创建配置实例、定义数据模型、获取...
- **命名空间支持**:利用命名空间可以有效地管理和复用宏库,同时避免命名冲突。 #### 四、通用数据模型 - **数据封装**:Freemarker 并不直接反映 Java 对象,而是通过插件式对象封装器将 Java 对象转换为模板...
- 通过指定不同的命名空间,即使指令或函数具有相同的名称,也可以避免冲突。 ##### 4.4 空白处理 - **空白处理**指的是对模板中的空格、制表符、换行符等空白字符的处理。 - **Freemarker**提供了多种空白处理模式...
指令用于控制模板的结构和行为,如`include`用于包含其他模板,`import`引入其他命名空间,`assign`分配变量等。 8. **数据模型**: 数据模型是FreeMarker用来获取数据的源,通常是Java对象。开发者可以将Java...
- **名字空间管理**:通过名字空间避免宏名冲突,方便管理和维护大型项目中的宏库。 - **输出转换**:内置多种输出转换功能,如HTML转义、内容压缩等,还可以自定义转换规则。 ##### 3. 通用数据模型 - **对象封装*...
- `#import`:导入其他命名空间,方便使用其中的宏或变量。 - `#macro`:定义宏,可以复用一段代码逻辑。 - `#nested`:在嵌套模板中使用,以便处理父模板传递的数据。 3. **模板配置** - `freemarker.template...
FreeMarker手册的这部分内容还提到了一些特殊情况下的高级特性,例如自定义指令、模板中的变量定义、命名空间的使用、空白字符的处理、方括号替换语法的使用等。在程序开发指南中,还涵盖了诸如变量处理、字符集问题...
- **命名空间**:支持命名空间的概念,帮助管理复杂的模板体系。 - **替换语法**:使用方括号表示法进行特殊字符的转义等操作。 #### 四、FreeMarker程序开发指南 除了模板语言之外,FreeMarker还提供了丰富的API...
- 命名空间帮助管理和避免宏之间的名称冲突。 - 输出转换块允许对生成的输出进行处理,如HTML转义、压缩或语法高亮。 3. **通用数据模型**: - FreeMarker不直接操作Java对象,而是通过对象封装插件来暴露数据...
- **命名空间**:介绍了命名空间的概念及其在 FreeMarker 中的应用。 - **空白处理**:解释了如何处理模板中的空白字符。 - **替换(方括号)语法**:介绍了方括号语法的使用方法及其用途。 #### 三、程序开发...
- **命名空间**:命名空间的使用方法及其在模板中的作用。 - **空白处理**:如何处理模板中的空格和换行等空白字符。 - **替换(方括号)语法**:特殊语法的使用场景和方法。 #### 三、程序开发指南 ##### 1. 程序...