获取参数:param.id
定义变量并赋值:<#assign id=param.id />
避免空值出错:id?default("")
${…}:称为interpolations,FreeMarker会在输出时用实际值进行替代,如${id},${map.ID}
FTL标记(FreeMarker模板语言标记):类似于HTML标记,为了与HTML标记区分,用#开始(有些以@开始,在后面叙述)
注释:包含在<#--和-->(而不是<!--和-->)之间
include:
- <#include "/copyright_footer.html">
<#include "/copyright_footer.html">
if/elseif/else:
- <#if condition><#elseif condition><#else></#if>
<#if condition><#elseif condition><#else></#if>
循环:
- <#list hash_or_seq as var>
- 遍历hash表或者collection(freemaker称作sequence)的成员
- 求序号用info_index
- 求list长度用list?size
- </#list>
<#list hash_or_seq as var>
遍历hash表或者collection(freemaker称作sequence)的成员
求序号用info_index
求list长度用list?size
</#list>
- 内建函数
- 字符串使用的:
- html:对字符串进行HTML编码
- cap_first:使字符串第一个字母大写
- lower_case:将字符串转换成小写
- upper_case:将字符串转换成大写
- trim:去掉字符串前后的空白字符
- 序列使用的:
- size:获得序列中元素的数目
- 数字使用的:
-
int:取得数字的整数部分(如-1.9?int的结果是-1)
内建函数
字符串使用的:
html:对字符串进行HTML编码
cap_first:使字符串第一个字母大写
lower_case:将字符串转换成小写
upper_case:将字符串转换成大写
trim:去掉字符串前后的空白字符
序列使用的:
size:获得序列中元素的数目
数字使用的:
int:取得数字的整数部分(如-1.9?int的结果是-1)
- <#macro name param1 param2 ... ><#nested param></#macro> 宏,无返回参数
-
<#function name param1 param2><#return val></#function> 函数,有返回参数
-
- {key:value, key2:value2 ...} 直接定义一个hash表
- [item0, item1, item2 ...] 直接定义一个序列
- hash0[key0] 存取hash表中key对应的元素
-
seq0[5] 存取序列指定下标的元素
-
-
<@function1 param0 param1 ... /> 调用函数function1
-
<@macro0 param0 param1 ; nest_param0 nest_param1 ...> nest_body < /@macro> 调用宏,并处理宏的嵌套
- <#assign var = value > 定义变量并初始化
<#macro name param1 param2 ... ><#nested param></#macro> 宏,无返回参数
<#function name param1 param2><#return val></#function> 函数,有返回参数
{key:value, key2:value2 ...} 直接定义一个hash表
[item0, item1, item2 ...] 直接定义一个序列
hash0[key0] 存取hash表中key对应的元素
seq0[5] 存取序列指定下标的元素
<@function1 param0 param1 ... /> 调用函数function1
<@macro0 param0 param1 ; nest_param0 nest_param1 ...> nest_body < /@macro> 调用宏,并处理宏的嵌套
<#assign var = value > 定义变量并初始化
----------------------------------------------------------
遇到的麻烦的地方有两个:
一个是空值的处理,很多地方都要多写一个?default("")实在很麻烦,幸亏师兄找到了解决办法,拜一个,见这里:http://huxiao.iteye.com/blog/470927
另一个是不同数据类型不能比较,否则报错,可以用abc?string和abc?int来强转
----------------------------------------------------------
使用起来总之不难,刚看的时候也很迷茫,因为我是新手,学java才几个月,所以理解这些东西比较慢一些,网上很多高手都说几个小时拿下,我大概花了有3-4天的时间吧,1个多星期后才能得心应手的使用,但是到现在为止还有很多不会,只是了解了一些浅层的东西,不过早晚的事情啦,我会努力的。一起加油。
其他部分参见《FreeMarker中文文档》,附件中有。
转自:http://huxiao.iteye.com/blog/470972
分享到:
相关推荐
下面将详细解释FreeMarker的一些关键语法和特性,以及在实际应用中的使用。 ### 1. 对象输出 在FreeMarker中,可以直接输出对象的值。例如,如果在数据模型中有一个名为`name`的对象,可以使用`${name}`将其值插入...
freemarker笔记
Freemarker学习笔记可以帮助初学者了解,快速掌握Freemarker
通过阅读`freemarker语法.docx`和`freemarker笔记1.txt`,你可以更深入地了解这些规则,并结合实际项目进一步掌握Freemarker的使用。同时,参考提供的博客链接(https://kingpingping.iteye.com/blog/1144477),...
再来看《Freemarker使用总结》和《freemarker笔记》。这些文档通常是个人或团队在实践中积累的经验总结,它们可能包含了一些最佳实践、技巧或者常见问题的解决方案。通过阅读这些笔记,你可以快速掌握Freemarker在...
在使用Freemarker的过程中,遇到乱码问题是一个常见的挑战,特别是当处理不同编码格式的数据时。本篇文章将探讨如何解决Freemarker中的乱码问题,并提供相关源码和工具的使用技巧。 首先,乱码通常源于字符编码不...
### FreeMarker 笔记、语法、讲解大全 #### 一、FreeMarker 概述与基本概念 FreeMarker 是一个用 Java 编写的模板引擎,它基于模板来生成文本输出。这些模板可以用来生成任何格式的文件,如 HTML 页面、XML 文档、...
### Freemarker 笔记知识点详解 #### 一、Freemarker 概述 Freemarker 是一款用 Java 编写的模板引擎,它基于模板来生成文本输出。模板中可以包含静态数据、简单表达式、控制结构(循环/条件语句)、宏等。它常...
它将视图逻辑从业务逻辑中分离,使得程序员专注于数据处理,而由FreeMarker负责生成和展示视图。FreeMarker不依赖于特定的Web容器,它可以独立于HTTP或Servlet工作,这也意味着它同样适用于非Web环境。 FreeMarker...