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币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 脉冲注入法,持续注入,启动低速运行过程中注入,电感法,ipd,力矩保持,无霍尔无感方案,媲美有霍尔效果 bldc控制器方案,无刷电机 提供源码,原理图
- Matlab Simulink#直驱永磁风电机组并网仿真模型 基于永磁直驱式风机并网仿真模型 采用背靠背双PWM变流器,先整流,再逆变 不仅实现电机侧的有功、无功功率的解耦控制和转速调节,而且能实
- 157389节奏盒子地狱模式第三阶段7.apk
- 操作系统实验ucore lab3
- DG储能选址定容模型matlab 程序采用改进粒子群算法,考虑时序性得到分布式和储能的选址定容模型,程序运行可靠 这段程序是一个改进的粒子群算法,主要用于解决电力系统中的优化问题 下面我将对程序进行详
- final_work_job1(1).sql
- 区块链与联邦学习结合:FedChain项目详细复现指南
- 西门子S7 和 S7 Plus 协议开发示例
- 模块化多电平变流器 MMC 的VSG控制 同步发电机控制 MATLAB–Simulink仿真模型 5电平三相MMC,采用VSG控制 受端接可编辑三相交流源,直流侧接无穷大电源提供调频能量 设置频率
- 基于小程序的智慧校园管理系统源代码(java+小程序+mysql+LW).zip