Freemaker模板引擎基础语法

本文深入解析Freemarker模板引擎的使用技巧,包括变量取值、条件判断、集合操作及自定义指令等内容,助您掌握高效开发技能。

1、常用${var}语法进行取值

2、如果值有可能为null、或者要取的对象可能不存在:使用${var!}

因为当对象不存在或null值时,${var}会报异常。使用'!'后无法正常取值时会放弃取值

3、取包装对象的值,通过'.'语法:${User.name}

日期的格式化 ${date?String('yyyy-MM-dd')}

现实html内容:${var?html}

4、取值的同时可以进行计算:${var '+-*/' }

1,freemarker【在前台】转换逻辑值true/false为yes/no

布尔值:<font color="red">${booleanVar?string('yes','no')}</font>

2,freemarker不支持java.util.Date类型,支持java.sql.Date类型。

可以在前台页面对java.util.Date类型进行转换:

日期:<font color="red">${dateVar?String('yyyy-MM-dd HH:mm:ss')}</font>

3,freemarker不能取空值,但可以控制

null: <font color="red">${nullVar!'我是默认值(可选)'}</font>

变量的赋值运算

<#assign a=100> 声明变量a值为100.

变量运算

赋值: a = ${a} 显示: a = 100;

运算:a + 100 = ${a + 100} 后面的表示运算 结果显示: a + 100 = 200

取对象值

${user.name!}

判断是否为空对象:

1、if else

2、${(user.name)!"definad"} //“!”代表name是否存在,“()”判断user是否存在

转义:${user.name!?html}

list集合遍历

<#list mylist(注:集合名称) as item>

${item!}

</#list>

如果集合中装的是对象,就使用item.properties 对象 点 属性

集合map遍历取值

<#list map?keys as key>

${key}:${map[key]}

</#list>


判断语句

if 表达式 <#if var==5>

输出内容!

</#if>

大于用gt <#if var &gt;99>输出内容</#if>

if elseif else注意elseif之间没有空格(转义字符&gt表示大于)

判断变量是否存在:

写法一:<#if myList??>

写法二:<#if myList?exists>

freemarker多条件判断 if:

&& 逻辑与

|| 逻辑或

! 逻辑非

switch语法

和Java类似,不加break时,每一个都会输出.

不设置default时,默认最后一个case为default。

<#switch var>

<#case value>

<#case value>

<#break>


字符串常用內建函数

连接 : + ${a+b}

截取 : substring ${(a+b)?substring(5,6)}

长度 :?length ${(a+b)?length}

大写 : ?upper_case ${(a+b)?upper_case}

小写 : ?lower ${(a+b)?lower}

使用自定义函数:

1 代码中定义:mv.addObject("sort_int",new SortMethod());

2 模板中使用:<#assign mylist=[1,2,3,4,5,6] />

<#list sort_int(mylist) as item>

3 SortMethod扩展了Freemarker的TemplateMethodModelEx,重写exec方法

${item}通过入参获取元素,元素类型为simpleSequare类型,通过Collection.sort方法排序。

注意:freemarker自定函数的入参、出参都是自己的类型,Java的List对应freemarker的SimpleSequence。


list 常用指令

<#list myList?sort?reverse as item> 调用排序,反序

${ietm_index} : ${item} 下标 :值

${item.index} //取list下标

${mylist?size} //取长度

自定义指令

需求:用户123456是否拥有admin角色,并且返回admin权限。

//前端

//自定义指令用“@”开始。

<@role user='123456' role='admin';result1,result2>

<#if result1>我的角色是:admin</#if>

role是在spring_freemarker.xml中配置

自定义指令,入参使用key-value形式,出参采用逗号间隔,入参与出参之间采用分号相隔,自定义指令中可以使用其他自定义或者freemarker内建指令

定义指令用@符号,使用指令用#符号

freemarker 实现自定义的指令,需要实现接口TemplateDirectiveModel,在spring-servlet.xml中配置properties标签


freemarker常用的内建函数

处理字符串的内建函数:

substring 字符串的截取

首字母变大写的函数cap_first

以...结尾的函数ends_with

字符串是否包含目标字符串的函数contains

如何把一个字符串转化为date 、datetime 、time类型的函数 date datetime time;

split ,trim,starts_with,index_of,last_index等函数

处理数字的内建函数

string x?string("0.##") 对数字进行格式化

round 四舍五入

floor 把小数点去掉

ceiling:进一函数,向上取整

处理list的内建函数:

sort_by:如果list里面是对象,这里可以使用该函数,按照某一个属性进行排序;

chunk:分块处理函数

first

last

seq_contains

seq_index_of

size

reverse

sort

其他内建函数

is函数:is_string,is_number,is_method

(),has_content函数

eval求值


macro nested return 示例

function return

这个以后补上   ...


哈哈哈哈,没有了....

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RemainderTime

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值