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 >99>输出内容</#if>
if elseif else注意elseif之间没有空格(转义字符>表示大于)
判断变量是否存在:
写法一:<#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
这个以后补上 ...
哈哈哈哈,没有了....
本文深入解析Freemarker模板引擎的使用技巧,包括变量取值、条件判断、集合操作及自定义指令等内容,助您掌握高效开发技能。
1257

被折叠的 条评论
为什么被折叠?



