内容发布更新时间 : 2024/11/14 14:52:45星期一 下面是文章的全部内容请认真阅读。
FREEMAKE语法介绍
1.变量初始化标签
语法
<#assign x=5> 显示变量 ${x}
显示结果为: 5
2.条件判断标签
<#assign age=60>
<#if (age>=60) > 你老了 <#else> 你还年轻 #if>
显示结果为: 你老了
3.循环标签
list可以java的List对象,list可以放置中可以放置任意java对象。
我们新建一个Pesson对象。 class person { private String name;
private int age;
setter;getter;省略 }
List list=new ArrayList();
Person p=new Person(“张山”,20); list.add(p);
p=new Person(“李四”,23);
<#list list as person>
姓名:${person.getName()},年龄:${person.getAge();} #list>
也可以如下写法:
<#list list as person>
姓名:${person.name},年龄:${person.age} #list>
如果传入的是Map对象可以使用键值进行访问,测试代码如下:
List list=new ArrayList();
Map m=new HashMap(); m.put(\,\张山\); m.put(\,20);
list.add(m);
m=new HashMap(); m.put(\,\李四\); m.put(\,25);
list.add(m);
标签写法:
<#list list as person>
姓名:${person.name},年龄:${person.age} #list>
如果需要在模版中输出 ${x},相关的模版如何写呢?
模版写法:
${r\
在引号或单引号之前加r输出原生字符串。
4.序列访问
指定一个文字的序列,使用逗号来分隔其中的每个子变量,然后把整个列表放到方括号 中。例如:
<#list [\as x> ${x}
#list>
将会打印出:
winter spring summer autumn
5.算术运算
算数运算包含基本的四则运算和求模运算,运算符有: 加法:+ 减法:- 乘法:* 除法:/
求模(求余):%
${100 – x*x} ${x/2} ${12}
假设x 是5,就会打印出:
75 2.5 2
6.获取数字整数部分
通常来说,FreeMarker 不会自动将字符串转换为数字,反之会自动进行。 有时我们只想获取计算结果的整数部分,这可以使用内建函数int 来解决。
${(x/2)?int} ${1.1?int} ${1.999?int} ${-1.1?int} ${-1.999?int}
仍然假设x 的值是5,那么将会输出:
2 1 1 -1 -1
7.比较运算
测试两个值相等使用=(或者采用Java 和C 语言中的==,二者是完全等同的。) 测试两个值不等使用!=。例子中假设user 是”Big Joe”。
<#if user = \> It is Big Joe #if>
<#if user != \> It is not Big Joe #if>
对数字和日期类型的比较,也可以使用<,<=,>=和>。不能把它们当作字符串来比 较。
<#if x <= 12>
x is less or equivalent with 12 #if>
8.逻辑操作
常用的逻辑操作符: ??逻辑或:|| ??逻辑与:&& ??逻辑非:!
逻辑操作符仅仅在布尔值之间有效,若用在其他类型将会产生错误导致模板执行中止。 例如:
<#if x < 12 && color = \
We have less than 12 things, and they are green. #if>
<#if !hot> <#-- here hot must be a boolean --> It's not hot. #if>
9.Freemaker内键函数
正如其名,内建函数提供始终可用的内置功能。内建函数以?形式提供变量的不同形式 或者其他信息。使用内建函数的语法和访问哈希表子变量的语法很像,除了使用?号来代替 点,其他的都一样。例如得到字符串的大写形式:user?upper_case。
在参考文档中可以查到所有内建函数的资料。现在,我们只需了解一些重要的内建函数 就行了。
??字符串使用的内建函数:
??html: 字符串中所有的特殊HTML 字符都需要用实体引用来代替(比如<代 替<)。
??cap_first:字符串的第一个字母变为大写形式 ??lower_case:字符串的小写形式 ??upper_case:字符串的大写形式 ??trim:去掉字符串首尾的空格 ??序列使用的内建函数: ??size:序列中元素的个数 ??数字使用的内建函数:
??int:数字的整数部分(比如-1.9?int 就是-1)
示例:
${test?html}
${test?upper_case?html}
假设字符串test 存储”Tom & Jerry”,那么输出为: