Freemarker总结笔记

1.字符串输出

1.1 可以嵌套

${"I'm a String ${string}"}

1.2 可以是对象的属性,不限层级

${info.name}

1.3 可以对空字符串处理

${name!"变量为空时给一个值"}
${user???string("变量不为空时给一个值","变量为空时给一个值")}

1.4 字母大小写

第一个字母大写:${data?cap_first}
所有字母小写:${data?lower_case}
所有字母大写:${data?upper_case}

1.5 字符串截取 :

通过下标直接获取下标对应的字母:${name[2]}
起点下标…结尾下标截取字符串:${name[0..5]}

2.if-elseif-else

<#if param>
<#elseif>
<#else>
</#if>
2.1 判断布尔值
<#if isTrue> 
正确的情况
</#if>
<#if !isFalse>
错误的情况
</#if>
2.2 判断是否是null(包含对象)
<#if info??>
非null的情况
</#if>
2.3 判断是否是空字符串
<#if info?? info == "">
空字符串的情况
</#if>

3. 集合

3.1 list集合
<#if users??>
	<#list users as user >
		${user.id} - ${user.name}
		${user???string("变量不为空时给一个值","变量为空时给一个值")}
	</#list>
<#else>
	 list为空
</#if>
3.2 Map集合:
<#assign mapData={"name":"程序员", "salary":15000}>
直接通过Key获取 Value值:${mapData["name"]}
通过Key遍历Map:
<#list mapData?keys as key>
	Key: ${key} - Value: ${mapData[key]}
</#list>
通过Value遍历Map:
<#list mapData?values as value>
	Value: ${value}
</#list>

4. 赋值

<#assign name = "Steven">
<#assign listData=["go", "blog", "is", "cool"]>
<#assign mapData={"name":"程序员", "salary":15000}>

5. 算数运算

<#-- 支持"+"、"-"、"*"、"/"、"%"运算符 -->
<#assign number1 = 10>
<#assign number2 = 5>
"+" : ${number1 + number2}
"-" : ${number1 - number2}
"*" : ${number1 * number2}
"/" : ${number1 / number2}
"%" : ${number1 % number2}

6.比较运算符

<#if number1 + number2 gte 12 || number1 - number2 lt 6>
"*" : ${number1 * number2}
<#else>
"/" : ${number1 / number2}
</#if>

7. 数据处理

<#assign floatData = 12.34>
数值取整数:${floatData?int}
获取集合的长度:${users?size}
时间格式化:${dateTime?string("yyyy-MM-dd")}

8.include指令

引入其他文件:<#include "otherFreeMarker.ftl" />

9.macro宏指令(直接替换)

<#macro mo>
定义无参数的宏macro--${name}
</#macro>
使用宏macro: <@mo />
<#macro moArgs a b c>
定义带参数的宏macro-- ${a+b+c}
</#macro>
使用带参数的宏macro: <@moArgs a=1 b=2 c=3 />

10.命名空间

<#import "otherFreeMarker.ftl" as otherFtl>
${otherFtl.otherName}
<@otherFtl.addMethod a=10 b=20 />
<#assign otherName="修改otherFreeMarker.ftl中的otherName变量值"/>
${otherFtl.otherName}
<#assign otherName="修改otherFreeMarker.ftl中的otherName变量值" in otherFtl />
${otherFtl.otherName}
otherFreeMarker.ftl 为了测试命名空间 和 include 指令的FreeMarker文件
其他FreeMarker文件
<#macro addMethod a b >
result : ${a + b}
</#macro>
<#assign otherName="另外一个FreeMarker的变量">

11.注释

客户端可以看到:<!-- 注释 -->
客户端看不到:<#-- 注释 -->

注意事项:

1.数据类型

和java不同,FreeMarker不需要定义变量的类型,直接赋值即可。
字符串: value = “xxxx” 。如果有特殊字符 string = r"xxxx" 。单引号和双引号是一样的。
数值:value = 1.2。数值可以直接等于,但是不能用科学计数法。
布尔值:true or false。
List集合:list = [1,2,3] ; list=[1…100] 表示 1 到 100 的集合,反之亦然。
Map集合:map = {“key” : “value” , “key2” : “value2”},key 必须是字符串哦!
实体类:和EL表达式差不多,直接点出来。

2.字符串操作

字符串连接:可以直接嵌套${"hello , KaTeX parse error: Expected 'EOF', got '}' at position 8: {name}"}̲ ; 也可以用加号{"hello , " + name}
字符串截取:string[index]。index 可以是一个值,也可以是形如 0…2 表示下标从0开始,到下标为2结束。一共是三个数。

3.比较运算符

== (等于),!= (不等于),gt(大于),gte(大于或者等于),lt(小于),lte(小于或者等于)。不建议用 >,< 可能会报错!
一般和 if 配合使用

4.内建函数

FreeMarker 提供了一些内建函数来转换输出,其结构:变量?内建函数,这样就可以通过内建函数来转换输出变量。
html: 对字符串进行HTML编码;
cap_first: 使字符串第一个字母大写;
lower_case: 将字符串转成小写;
upper_case: 将字符串转成大写;
size: 获得集合中元素的个数;
int: 取得数字的整数部分。

5.宏指令

可以理解为java的封装方法,供其他地方使用。宏指令也称为自定义指令,macro指令
语法很简单:<#macro val > 声明macro </#macro>; 使用macro <@val />

6.命名空间

可以理解为java的import语句,为避免变量重复。一个重要的规则就是:路径不应该包含大写字母,使用下划线_分隔词语,myName --> my_name
语法很简单:<#import “xxx.ftl” as val>
其他没有说明的语法是因为和java一样,没什么特别之处。所以没有列出来。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值