摘要: FreeMarker模板包含及名称空间,主要是为了模板的重用。使用<#include>包含其他模板,如果包含多个模板,可能会出现同名变量被覆盖的问题。可以使用import来完成导入,并且加入名称空间
FreeMarker模板包含及名称空间,主要是为了模板的重用。使用<#include>包含其他模板,如果包含多个模板,可能会出现同名变量被覆盖的问题。可以使用import来完成导入,并且加入名称空间
模板11.ftl包含/inc/inc1.ftl和/inc/inc2.ftl
inc1.ftl:
<#assign username="张三">
<#macro test>
hello world
<#macro>
|
/inc/inc2.ftl:
11.ftl的模板及输出:
<#include style="color:black">
<#include style="color:black">
${username}
|
李四
|
从上面的例子中可以看出使用incldue会出现同名变量被覆盖的问题,可以使用import来完成导入,并且加入名称空间(名称空间其实就是给引入的模板起一个名称)
<#import style="color:black">
<#import style="color:black">
${inc2.username}
${inc1.username}
|
李四
张三
|
在11.ftl中,也可在定义模板变量时指定其所属的名称空间(inc2或inc1,不能凭空捏造),且此时就必须使用"名称空间.变量名"的方法访问了
<#--<>将一个变量定义到名称空间中-->
<#assign age="12">
${inc2.age}
|
12
|
访问名称空间中的自定义指令
在inc1.ftl中有一个自定义的指令test,访问方式如下:
<#--<>访问名称空间中的自定义指令-->
<@inc1.test>
|
hello world
|
本文链接:FreeMarker模板包含及名称空间,本文由huangyineng原创,转载请注明出处
分享到:
相关推荐
- `<#include filename>` 用于包含其他模板文件。 - 可以指定编码和解析模式。 - 示例: ```freemarker ``` **5. import** - `<#import path as hash>` 用于导入文件及其宏组件。 - 示例: ```freemarker ...
- **名字空间**: 有助于避免命名冲突,便于管理和重用宏库。 - **通用数据模型**: - **对象封装**: Java对象通过对象封装器在模板中显示,而不是直接映射。 - **抽象表示**: 可以通过抽象方式表示对象,如...
- 在**FreeMarker**中,**模板**是包含静态文本和控制结构的文件,而**数据模型**则是一组由应用程序提供的数据对象。**FreeMarker**引擎负责读取模板,并使用数据模型中的数据填充模板中的占位符,最终生成所需的...
- **数据模型**:定义了一个包含用户名称和最新产品的数据模型,该模型由开发者创建并通过FreeMarker传递给模板。 - **效果演示**:最终生成的HTML页面将根据数据模型显示具体的用户名和产品链接,实现了动态内容...
- **命名空间**:通过命名空间管理模板和指令,避免名称冲突。 - **空白处理**:处理模板中的空格、制表符等空白字符,确保输出符合预期。 - **替换(方括号)语法**:使用方括号语法来处理特殊字符,如转义字符等。...
- **名字空间**:有助于构建和维护可重用的宏库,并能避免名字冲突的问题。 - **输出转换**:支持输出转换块,可以在嵌套模板片段生成输出时实现 HTML 转义、压缩、语法高亮等功能,同时也支持自定义转换规则。 ###...
- **模板加载机制**:Freemarker 支持多种模板加载方式,如从本地文件系统、数据库或其他任何来源加载模板文件。 - **输出灵活性**:除了可以将生成的文本保存到本地文件外,Freemarker 还支持通过电子邮件发送、从 ...
- **名字空间管理**:使用名字空间有助于构建和维护可重用的宏库,同时避免名称冲突。 ##### 3. 通用数据模型 - **对象封装**:Java对象通过插件式对象封装在模板中表示。 - **抽象表示**:可以通过抽象(接口)...
#### 三、FreeMarker模板语言详解 ##### 3.1 总体结构 模板文件主要由以下几部分组成: - **静态文本**:直接输出到结果中的文本。 - **表达式**:用于计算并返回一个值。 - **指令**:控制模板的流程,如循环和...
- **名字空间**: 帮助构建和维护可重用的宏库,避免名字冲突问题。 - **输出转换**: 内置输出转换功能,例如 HTML 转义、压缩、语法高亮等。 #### 通用数据模型 - **对象封装**: Java 对象通过插件式对象封装器在...
- 命名空间帮助管理和避免宏之间的名称冲突。 - 输出转换块允许对生成的输出进行处理,如HTML转义、压缩或语法高亮。 3. **通用数据模型**: - FreeMarker不直接操作Java对象,而是通过对象封装插件来暴露数据...
命名的宏可以具有位置参数和嵌套内容,名字空间有助于建立和维护可重用的宏库。 3. 通用数据模型:FreeMarker 不是直接反射到 Java 对象,Java 对象通过插件式对象封装,以变量方式在模板中显示。可以使用抽象...
- 支持名字空间,有助于构建和维护可重用的宏库,同时避免名称冲突问题。 - 输出转换块:在嵌套模板片段生成输出时进行HTML转义、压缩、语法高亮等操作,并支持自定义转换。 3. **通用数据模型**: - FreeMarker...
FreeMarker 还提供了许多高级特性,如自定义指令、命名空间、空白处理等,这些特性的使用可以使模板更加灵活和强大。 以上就是关于 FreeMarker 的快速入门介绍,希望对你有所帮助。通过本教程的学习,你应该能够...
命名空间用于避免指令和变量名称冲突,而空白处理则提供了对模板中空白字符的精确控制,这对于生成格式化的输出非常有用。 ### 配置实例与数据模型创建 在程序开发中,首先需要创建一个FreeMarker的配置实例,然后...
例如,一个简单的FreeMarker模板可能包含如下代码: ```html <title>Welcome! <h1>Welcome ${user}! <p>Our latest product: ${latestProduct.url}">${latestProduct.name}! ``` 在这个模板中,`${user}`...
模板中还可以定义命名宏,支持位置参数和嵌套内容,使用名字空间避免命名冲突。 3. **通用数据模型**:FreeMarker 不直接反映Java对象,而是通过插件式对象封装,以变量形式在模板中呈现数据。这使得模板开发者可以...
- **名字空间管理**:通过名字空间来组织和管理宏库,避免命名冲突。 - **输出转换**:支持自定义输出转换规则,如HTML转义、压缩等。 3. **数据模型** - **对象封装**:Java对象通过特定的对象封装机制暴露给...
根据提供的文件信息,我们可以从《FreeMarker手册》中提取出一系列关键知识点,这些知识点主要围绕着FreeMarker模板引擎的基础概念、使用方法以及高级特性展开。下面是对这些知识点的详细总结: ### 一、FreeMarker...
此外,它还有命名宏和名字空间,便于组织和重用模板代码。 4. **数据模型**:FreeMarker 不直接映射到 Java 对象,而是通过插件式对象封装。这允许你使用抽象的方式(如 JavaBeans、XML 文档、SQL 结果集)表示数据...