freemarker基本指令用法

1、if指令

//第一种用法
[#if 条件]
...
[/#if]
//第二种用法[#if 条件]...[#else]...
[/#if]//第三种用法[#if 条件]...[#elseif 条件]...[#else]...
[/#if]

2、list指令

//第一种用法
[#list animals as animal] ...
[/#list]//第二种用法
[#list animals] //如果集合为空则不进list...[#items as animal] //循环体...[/#items]
[/#list]//第三种用法
[#list animals as animal] $ {animal}[#sep]//表示还有下一个实体时,执行显示,号,[/#sep]
[/#list]
//第四种用法
[#list animals  as animal]${animal}[#sep],[/#sep][#else]//如果list元素为空则执行elseNone
[/#list]//第五种用法
[#list animals  ]...[#items as animal]${animal}[#sep] ...[/#sep][/#items]
[#else]
...
[/#list]

3、include指令
使用该include指令,您可以将另一个文件的内容插入到模板中。

 [#include "/copyright_footer.html"]

4、使用内置插件
FreeMarker使用?启动调用内置插件

  ${user?upper_case} //字符串大写${user?cap_first} //首字母大写${user?length} //字符串长度${animal.protected?string("Y", "N")} //返回字符串“Y”或“N”,具体取决于布尔值animal.protected${user?starts_with("J")} //第一个字母是否是J${1.1?int} //取整//list 相关用法${animals?size} //list大小${fruits?join(", ")} //通过连接项目,并在每个项目之间插入参数分隔符(如“orange,banana”)将列表转换为字符串[#list animals as animal]${animal?index}   //索引0开始${animal?counter} //索引1开始${animal?item_parity} //根据当前的计数器奇偶校验,给出字符串“奇数”或“偶数”。这通常用于着色具有交替颜色的行[/#list]

内置插件是可以连接一起使用,例如:
${fruits?join(", ")?upper_case}
${1.1?int} //取整
5、处理缺失的变量
所谓缺失值的意思是:在FreeMarker的模型中不存在的变量,处理方式有两种:

  • 设置默认值,关键符 !
${user! "visitor" }  //如果user变量不存在则值就是visitor,否则就是${user}

备注:如果给一个对象的某个属性设置默认值应该 ${(user.name)!""},如果不加括号,那么如果user也是缺失值,那么FreeMarker会报错。

  • 使用if判断是否是缺失变量,关键符号两个文号 ??
[#if user??]//user变量存在
[/#if]

6、“. .”操作符
“…”用来表示一个范围,通常用于截取字符串和序列

start..end                       包含开始和结束。例:0..5  相当于[0,5]
start..<end 和  start..!end      包含开始但不包含结束。例: 0..<5  相当于[0,)
start..*length                   长度限制范围。例: 1..*5  相当于 1 2 3 4 5
start..                          右无界范围。这就像长度有限的范围,长度无限。例如,1.. 相当于 [1, 2, 3, 4, 5, 6, ... ]无限

“. .”操作符并不真正存储它们所包含的数字,因此例如0. .1并且 0. .100000000速度相同,占用的内存也相同。
该操作符可用于字符串操作和序列操作。例如:

  • 字符串操作
//比如name=“freemarker”
${name[0..5]}   //freema   截取前6个字符
${name[0..<5]}  //freem    截取前5个字符
${name[0..*5]}  //freem     截取前5个字符
${name[5..]}    //arker       截取第6个字符及以后的字符
  • 序列操作
[#list animals[0..5] as animal]  ${animal.name} [/#list]     //只循环前序列的前6个对象
[#list animals[0..<5] as animal]  ${animal.name} [/#list]    //只循环前序列的前5个对象
[#list animals[0..*5] as animal]  ${animal.name} [/#list]    //只循环前序列的前5个对象
[#list animals[5..] as animal]  ${animal.name} [/#list]      //只循环前序列的第6个及以后的对象
[#list animals[10..5] as animal]  ${animal.name} [/#list]    //循环下标为10到5的倒序,这种方法可以让序列倒序
[#list 0..10 as num]  ${num} [/#list]                        //0~10的循环

7、r转义
如果你想直接在页面上显示“${name}”字符串就得使用r进行转义。例如

${r"${name}"}  //直接输出${name}

8、assign关键字
assign用于自定义变量
例如:

  • 定义一个字符串变量
[#assign name="freemarker"]                  //定义一个字符串
[#assign name="Hello ${user} !"]
[#assign name="free" + “marker”]             //两个字符串拼接
  • 定义一个序列
<#assign seq1 = ["abc","bcd","cde"]>         //定义一个序列
<#assign seq2 =  seq1 + ["efg"]>              //两个序列拼接
<#assign seq3 =  ["a",["b","c"],"d"]>           //可以序列中可以包含任意类型
  • 定义一个Hash
<#assign ages = {"Joe":23,"Fred"”:25}>
<#assign ages = {"Joe":23,"Fred":25} + {"Joe":30,"Fred":18}>
  • 定义一个number变量
<#assign num = 25>
<#assign num = 25 + 10 * 12>    //可以进行各种算数运算

更多用法参考:FreeMarker官方文档

freemarker基本指令用法相关推荐

  1. ARM汇编:汇编中proc、endp、ret、near、far指令用法

    ARM汇编:汇编中proc.endp.ret.near.far指令用法 子程序名 PROC NEAR ( 或 FAR ) -- ret 子程序名 ENDP (1)NEAR属性(段内近调用): 调用程序 ...

  2. java中Freemarker list指令详解

    java Freemarker中list指令主要是进行迭代服务器端传递过来的List集合. 定义 <#list nameList as names> ${names} </#list ...

  3. 我的世界服务器物品怎么上锁,我的世界怎么给箱子上锁_我的世界箱子上锁指令用法及解锁方法_玩游戏网...

    <我的世界>中许多玩家都想为箱子上锁,那么如何才能为箱子设置一个密码呢?今天就为大家分享"Julyξ"介绍的<我的世界>箱子上锁指令用法及解锁方法,一起来看 ...

  4. 左移shl、右移shr指令用法

    左移shl.右移shr指令用法 shl和shr是逻辑移位指令. 1.shl是逻辑左移指令,它的功能为: (1)将一个寄存器或内存单元中的数据向左移位: (2)将最后移出的一位写入CF中: (3)最低位 ...

  5. LTspice基础教程-027.自定义函数;func指令用法

    在LTspice中,我们可以自定义函数.语法如下: .func <name>([args]) {<expression>} func是function的缩写:name是自定义函 ...

  6. linux汇编语言cmp,汇编语言中cmp指令用法笔记与总结

    这篇文章主要介绍了汇编语言中cmp指令用法,结合实例形式总结分析了汇编语言cmp指令基本功能.使用方法及操作注意事项,需要的朋友可以参考下 本文实例讲述了汇编语言中cmp指令用法.分享给大家供大家参考 ...

  7. 我的世界服务器自动锁箱,我的世界箱子上锁指令用法及解锁方法 箱子怎么上锁...

    我的世界箱子上锁指令用法及解锁方法 想必大家都想过,为什么MC中的箱子有一个锁一样的东西却不能真正的锁起来呢? 那今天我就来教大家怎么锁(shui)箱(tie)子. 复制这个指令到游戏里: /bloc ...

  8. c语言 pragma指令,C语言#pragma指令用法

    引导语:在所有的预处理指令中,#Pragma指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.以下是百分网小编分享给大家的C语言#pragma指令用法,欢迎阅读! # ...

  9. 【参考】Android wm指令用法详解

    我就放些我自己大概率会用到的指令在这儿,详细的看原文地址. 原文地址:Android wm指令用法详解 - 走看看 adb shell SE:/ $ wm size        //查看当前分辨率 ...

最新文章

  1. ASP.Net中的TreeView控件中对节点的上移和下移操作
  2. python可以干什么工作-Python学完工作不好找?看看数据分析可视化都可以做什么...
  3. python工具是什么-使用Python编写命令行工具有什么好的库?
  4. vue 接口数据排序_Vue 使用 axios 请求 mock 模拟接口的数据
  5. 客户旅程_我们进入微服务世界的旅程-以及从中学到的东西。
  6. redis源码之main()函数剖析
  7. jquery 监听返回事件
  8. netstat mysql_mysql-netstat
  9. pixel1代android11,Pixel用户吐槽Android 11:升级后性能被劣化
  10. c语言考试常考大题,C语言题库经典题 考试常考题.doc
  11. 数据库设计中的14个技巧(转载)
  12. 字符常量参加表达式运算
  13. 临床大数据分析与挖掘
  14. 【Unity】由Unity资源的相对路径获取资源的AssetDatabase路径
  15. python代码写龙卷风_python - 龙卷风服务器二进制可执行文件
  16. java设计模式5,接口隔离原则
  17. 【5G】5GC网元服务及对应消息
  18. python与环境统计学之f检验例题解答
  19. 65883-12-7,PEG5-Ms带有甲磺酸基和羟基的PEG连接剂
  20. rabbitMQ概述/在springboot下测试五种模式

热门文章

  1. java发送短信是乱码_java发送短信内容乱码
  2. CS中AWP盲狙瞄准器
  3. cookie案例---小米购物车历史记录(离线不可用)
  4. cesium根据输入角度设置中心点(俯视角度)
  5. 百度网盘没会员,下载速度也可以达到开会员的速度
  6. throttle的实现
  7. 我学python的那段日子(三)python基本语法(一)
  8. 机器人学中的状态估计学习笔记(二)第三章线性高斯系统的状态估计
  9. 上班族适合入行学习3D游戏建模吗?有没有好的学习路线
  10. 杭州区块链技术 与 应用联合会简报