- 简单变量:它能从模板中的任何位置来访问,或者从使用include指令引入的模板访问。可以使用assign或macro指令来创建或替换这些变量。
- 局部变量:它们只能被设置在宏定义体内,而且只在宏内可见。一个局部变量的生存周期只是宏的调用过程。可以使用local指令在宏定义体内创建或替换局部变量。
- 循环变量:循环变量是由指令(如list)自动创建的,而且它们只在指令的开始和结束标记内有效。宏的参数是局部变量而不是循环变量。
<#macro test> 2. ${x} <#-- 这里我们仍然看到的是普通变量 --> <#local x = "local"> 3. ${x} <#-- 现在局部变量隐藏了它 --> <#list ["loop"] as x> 4. ${x} <#-- 现在循环变量隐藏了局部变量 --> </#list> 5. ${x} <#-- 现在又可以看到局部变量了 --> </#macro>
内部循环变量可以隐藏外部循环变量:
<#list ["loop 1"] as x> ${x} <#list ["loop 2"] as x> ${x} <#list ["loop 3"] as x> ${x} </#list> ${x} </#list> ${x} </#list>
输出为:
loop 1 loop 2 loop 3 loop 2 loop 1
有时会发生一个变量隐藏数据模型中的同名变量,但是如果想访问数据模型中的变量,就可以使用特殊变量globals。例如,假设我们在数据模型中有一个名为user,值为”Big Joe”的变量。
<#assign user = "Joe Hider"> ${user} <#-- 打印: Joe Hider --> ${.globals.user} <#-- 打印: Big Joe -->
相关推荐
freemarker替换变量实例
在FreeMarker模板中,每个哈希都有一个唯一的名称,与之关联的每个变量也都有一个唯一的键名。 3. Sequences(序列):序列也是一个容器,用于存储一系列的值,这些值可以按顺序访问。索引值默认从0开始。序列可以...
开发者可以定义变量和逻辑,以便根据用户操作显示不同的界面元素。 jQuery是一个流行的JavaScript库,简化了DOM操作、事件处理、动画效果和Ajax交互。在登录注册系统中,jQuery可以用来处理用户输入验证,如检查...
例如,`<#assign user = actionBean.user>`可以将`actionBean`中的`user`属性赋值给FreeMarker变量`user`,然后在模板中可以通过`${user.name}`来显示用户名。 在“Java FreeMarker demo”的压缩包中,可能包含了...
-- 可以定义全局的Freemarker变量 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> ;charset=UTF-8"/> ``` 这段配置定义了一个`...
变量可以是Java对象的属性,也可以是内置的FreeMarker变量。表达式可以进行基本的算术运算、比较和逻辑操作。 4. **控制结构**:FreeMarker支持条件语句(如`<#if>`、`<#else>`、`<#elseif>`)和循环结构(如`...
-- 添加自定义的FreeMarker变量 --> <bean id="fmHtmlEscape" class="freemarker.template.utility.HtmlEscape" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker....
这里的`${title}`、`${user}`和`${date}`是Freemarker变量,它们将在运行时被实际的值替换。 3. **构建数据模型**:在服务器端程序中,创建一个Map或者其他类型的数据结构,包含模板中需要用到的数据。比如: ```...
总结以上知识点,我们知道使用Freemarker生成Word文档的过程涉及到创建Word模板、替换标记为Freemarker变量、配置Freemarker环境、准备数据模型,以及使用Freemarker模板引擎填充数据生成最终文档。需要注意的是,...
-- 可以添加自定义的FreeMarker变量 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> ;charset=UTF-8"/> ``` 这里,`freemarkerConfigurer...
FreeMarker变量通常是从Action传递过来的数据,通过${}表达式在模板中被解析和渲染。 4. **整合与配置**:在源码中,你会看到`struts-plugin.xml`文件,这是Struts2的插件配置,用于集成Sitemesh。同时,Sitemesh的...
Spring MVC配置Freemarker全局变量,实现应用全路径
这里`${pdf.root.data.RES_CUSTOMER.CLIENTNAME}`就是FreeMarker变量,它会根据传入的EOS数据总线XML自动填充实际的客户名称。 2. 部署与依赖: 实现这个方案需要三个关键的JAR包,具体部署时,FreeMarker模板...
FreeMarker使用${...}表达式来插入变量,#{...}用于输出注释,以及、等控制结构进行条件判断和循环。然而,这些默认标签可能无法满足所有复杂的场景,因此自定义标签就显得尤为必要。 自定义FreeMarker标签通常涉及...
- **模板(Templates)**:Freemarker的核心是模板文件,它定义了页面的布局和样式,包含变量和控制结构。 - **数据模型(Data Model)**:提供给模板的数据,通常由Java对象构成,包括单个对象、集合、Map等。 - **模板...
这些变量和指令是用特定的FreeMarker语法表示的,例如`${expression}`用于输出变量值,`<#if>`、`<#foreach>`等用于控制流程。 1. **变量和表达式**:在FreeMarker模板中,`${}`内的内容是表达式,用于获取Java对象...
Freemarker提供了一个调试模式,可以帮助开发者找出模板中的错误,比如未定义的变量、语法错误等。 这个"freemarker Demo"项目应该包含了基本的模板文件、Struts2配置以及相关的Java代码,通过实际运行和修改这些...
这些变量通常由应用程序(如Java后端)提供,Freemarker负责根据模板和数据生成最终的输出。 具体到`2.3.23`这个版本,它可能包括以下特性: 1. **模板设计**:Freemarker支持多种模板设计,如HTML、XML、邮件模板...
FreeMarker支持多种指令,如`<#if>`、`<#else>`、`<#else_if>`用于条件判断,`<#foreach>`、`<#break>`、`<#continue>`用于循环控制,`<#assign>`、`<#global>`进行变量定义,`<#function>`自定义函数等。...
2. **语法高亮**:提供Freemarker关键词和语法的色彩突出显示,提高代码可读性,便于快速识别模板中的指令和变量。 3. **代码提示和完成**:在编写模板时,插件能提供智能代码补全功能,根据上下文提示可能的指令和...