freemarker 语法学习
根据提供的信息,我们可以详细探讨Freemarker的相关知识点及其在实际应用中的使用方法。 ### Freemarker简介 Freemarker是一款用Java编写的模板引擎,它基于模板来生成文本输出。Freemarker本身是纯Java实现的,因此可以在任何支持Java的环境中运行。它可以用来生成HTML网页、XML文档、Office文档等文本格式的文件。由于其强大的功能和灵活性,Freemarker被广泛应用于Web开发领域。 ### 核心知识点详解 #### 1. 控制结构:if, else, elseif Freemarker提供了条件判断语句`if`、`else`以及`elseif`,用于根据不同的条件输出不同的内容。 ```ftl <#if condition> <!-- 如果条件为真,则执行这里的代码 --> <#if x = 1> x is 1 </#if> <#elseif condition2> <!-- 如果上一个条件为假且这个条件为真,则执行这里的代码 --> <#if x = 2> x is 2 </#if> <#else> <!-- 如果所有前面的条件都为假,则执行这里的代码 --> x is not 1 or 2 </#if> ``` #### 2. 分支结构:switch, case, default, break `switch`语句允许我们根据不同的条件执行不同的代码块。 ```ftl <#switch value> <#case refValue1> <!-- 如果value等于refValue1,则执行这里的代码 --> <#break> <#case refValue2> <!-- 如果value等于refValue2,则执行这里的代码 --> <#break> ... <#default> <!-- 如果没有匹配的case,则执行这里的代码 --> </#switch> ``` 例如,根据某个值的大小进行处理: ```ftl <#switch being.size> <#case "small"> This will be processed if it is small <#break> <#case "medium"> This will be processed if it is medium <#break> <#case "large"> This will be processed if it is large <#break> <#default> This will be processed if it is neither </#switch> ``` #### 3. 循环结构:list, break 使用`list`语句可以遍历集合或数组。 ```ftl <#list sequence as item> <!-- 对序列中的每个元素执行这里的代码 --> <#if item = "spring"> <#break> </#if> </#list> ``` 同时,Freemarker还提供了额外的功能,如`item_index`和`item_has_next`,帮助更好地控制循环流程。 #### 4. 模板包含:include 通过`include`指令可以在一个模板中包含另一个模板的内容。 ```ftl <#include filename> <!-- 或者 --> <#include filename options> ``` 其中,`options`参数用于指定包含模板时的一些选项,如编码方式等。 ```ftl <#include "/common/copyright.ftl" encoding="GBK"> ``` #### 5. 模板导入:import `import`指令用于导入其他模板文件,并将其作为一个命名空间使用。 ```ftl <#import path as hash> ``` 例如,可以在一个模板中导入另一个模板文件,并将其作为一个命名空间来调用其中的方法。 ```ftl <#import "/libs/mylib.ftl" as my> <@my.copyright date="1999-2002"/> ``` #### 6. 压缩:compress `compress`指令可以用来压缩输出,去除不必要的空白字符。 ```ftl <#compress> <!-- 这里的内容会被压缩 --> </#compress> ``` 例如: ```ftl <#assign x = "moo\n\n"> <#compress> 12345 ${x} test only Isaid, test only </#compress> ``` #### 7. 转义与非转义:escape, noescape `escape`指令用于转义特殊字符,而`noescape`则不进行转义。 ```ftl <#escape x as y> <!-- 这里会转义变量x --> </#escape> <#noescape x> <!-- 这里不会转义变量x --> </#noescape> ``` ### 实际应用场景 - **Web开发**:Freemarker在Web开发中非常常见,用于动态生成HTML页面。 - **报表生成**:利用Freemarker可以生成复杂的报表和文档。 - **邮件模板**:使用Freemarker创建可定制的邮件模板,提高用户体验。 - **API文档生成**:自动从API元数据生成文档。 ### 结论 Freemarker作为一款功能强大的模板引擎,为开发者提供了丰富的语法和支持,使得动态文本生成变得简单高效。通过对以上知识点的学习,可以帮助开发者更好地掌握Freemarker的基本使用方法和高级技巧,从而提高工作效率。
2指令
if, else, elseif
switch, case, default, break
list, break
include
Import
compress
escape, noescape
assign
global
setting
macro, nested, return
t, lt, rt
3一些常用方法或注意事项
表达式转换类
数字循环
对浮点取整数
给变量默认值
判断对象是不是null
常用格式化日期
添加全局共享变量数据模型
直接调用java对象的方法
字符串处理(内置方法)
在模板里对sequences和hashes初始化
注释标志
sequences内置方法
hashes内置方法
4 freemarker在web开发中注意事项
web中常用的几个对象
在模板里ftl里使用标签
如何初始化共享变量
与webwork整合配置
5高级方法
自定义方法
自定义 Transforms
1概念
最常用的3个概念
sequence 序列,对应java里的list、数组等非键值对的集合
hash 键值对的集合
namespace 对一个ftl文件的引用,利用这个名字可以访问到该ftl文件的资源
2指令
if, else, elseif
语法
<#if condition>
...
<#elseif condition2>
...
<#elseif condition3>
...
...
<#else>
...
</#if>
用例
<#if x = 1>
x is 1
剩余22页未读,继续阅读
- chengdaili2012-10-19txt文档,感觉很一般,不够系统详细
- 粉丝: 0
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助