字符串空值处理:
freemarker中变量必须赋值,否则报错

  1. ! : 指定缺失变量的默认值,不设置是空字符串,
    2.??: 判断变量是否存在,如果变量存在返回true,否则返回false

布尔值不能直接输出使用 myBool?string('yes', 'no') 或者myBool?string或者myBool?c

直接指定的值,可以是字符串,布尔,数值,集合,map
字符串中可以使用转义字符,如果有大量的特殊字符,,可以在引号前面加一个字母r,则字符串将按照原样输出,不转义
指定为布尔时,不用加引号
指定为数值时,不需要引号
集合用中括号表示,,可以使用5…1表示[1,2,3,4,5]
map使用花括号表示,map中的key-value用冒号分隔,map中多个key-value用逗号分隔

转换日期

<div>${birthday?date}</div>
<div>${birthday?time}</div>
<div>${birthday?datetime}</div>
<div>${birthday?string("yyyy-MM-dd HH:mm:ss")}</div>

表现数字,货币,百分比, ##保留两位小数

<#assign price=99>
<div>${price?string.currency}</div>
<div>${price?string.percent}</div><#assign number=3.1415>
<div>${number?string["0.##"]}</div>

集合的遍历

常见指令:

assign 定义一个变量
if
list
macro

assign

分支语句
if

<#assign age=18>
<#if (age>=60)>老年<#elseif age gte 40> 中年<#elseif age gte 20> 青年<#else>少年
</#if>

switch…case

<#--分支语句   break能提前终止集合的遍历-->
<div><#assign age=99><#switch age><#case 23>23 <#break><#case 24>24 <#break ><#default >hehe</#switch>
</div>

list
遍历集合

<#if users??><#list users as user><div>${user.id}---${user.name}---${user.address}---${user_index}---${user_has_next?string("yes","no")}</div></#list>
</#if>

集合拼接只能带中括号带中括号拼接(确保类型一样),,集合中的元素可以是表达式

<#list [4+6,5,6]+[1,2,3] as x><div>${x}</div>
</#list>

访问集合中的某个元素,下标从0开始

<#assign list=1..5>
<div>${list[0]}</div>

自定义map并遍历

<#assign info={"username":"cj","password":"123"}>
<#list info?keys as key><div>${key}---${info[key]}</div>
</#list>
<#list info?values as value><div>${value}</div>
</#list><#--拼接map-->
<#list  (info+{"birthday":birthday})?keys as key><div>${key} ---</div>
</#list>

输出map指定元素

<#assign info={"username":"cj","password":"123"}>
<div>${info.username}</div>
<div>${info["username"]}</div>

字符串拼接

<div>${"hello "+name}</div>
<div>${"hello ${name}"}</div>

截取字符串,下标从0开始

<#assign str="hello world">
<div>${str[0]}</div>
<div>${str[1..3]}</div>

比较运算符 = != > >= <= > gt , gte,lt,lte
freemarker的比较是精确比较,不会忽略大小写及空格

逻辑运算符 && || !

内建函数:

<div>${"hello"?cap_first}</div>
<div>${"HELLO"?lower_case}</div>
<div>${"hello"?upper_case}</div>
<div>${" hello "?trim}</div>
<div>${users?size}</div>
<div>${3.14?int}</div>
<div>${birthday?string("yyyy-MM-dd")}</div>

引入ftlh

<#--引入ftlh-->
<#include './index.ftlh'>

不解析

<#noparse>
不解析内容
</#noparse>

自定义宏:

宏:把你的操作录制下来,你可以去回放这个操作
宏和include区别: 宏可以传入自定义参数

<#macro book>三国演义
</#macro>
<#--调用宏-->
<@book/>

带参数的宏 nested要嵌入的内容 ,写在调用宏标签的中间,去替换<#nested>

<#macro book books mark><#list books as item><div>${item}---${mark}</div></#list><#nested >
</#macro><@book ["三国演义","红楼梦"] "hehe">要嵌入的内容
</@book>
<@book books=["水浒传","西游记"]  mark="111"></@book>

将宏抽离到单独的文件,使用import引入并设置别名

<#-- 引入宏文件,取别名为com -->
<#import './mymacro.ftlh' as com>
<#-- 调用带前缀 -->
<@com.book bs=["红楼梦","西游记"] title="hehe"><h2>哦</h2>
</@com.books>


引用:https://blog.csdn.net/weixin_44454512/article/details/109877418

freemarker常用标签相关推荐

  1. freemarker常用标签 ftl模板文件常用标签

    freemarker常用标签 ftl模板文件常用标签 1.注释 <#–-–>格式不会输出 2 list循环 <#list datalist as entity>     ${e ...

  2. 滚动屏幕显示隐藏div_HTML结构-常用标签:a·img·table·form·input·iframe·div

    学习目标: 掌握html的结构,head与body的区别 掌握常用标签 掌握a标签,img标签 掌握table标签 掌握form标签,input标签 掌握iframe 和frameSet标签 掌握di ...

  3. mybatis常用标签和动态查询

    这里是修真院后端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析后端知识/技能,本篇分享的是: [mybatis ...

  4. 1,html常用标签学习

    1.html常用标签学习: 1.1.<em>和<strong>标签主要是用来做强调用的,其中<em>是让文字变成斜体,而<strong>把文字进行加粗显 ...

  5. web.xml 常用标签配置(转)

    2019独角兽企业重金招聘Python工程师标准>>> 1.Web.xml作用: 每一个javaWeb工程都有一个web.xml配置文件,web.xml文件是用来初始化工程配置信息的 ...

  6. html(常用标签)

    <!DOCTYPE html> <html><head><meta charset="utf-8"><title>常用标 ...

  7. freemarker自定义标签(二十一)

    一,讲解一 假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术 ...

  8. 初始html(常用标签)

    今天我们来学习Web前端的一些知识,这一阶段需要记忆的东西相对来说比较多,需要花时间记忆以及做好练习. 一.HTML初识 1.web服务本质 import socketdef main():sock ...

  9. zblog php标签,201502200101 zblogphp调整“显示常用标签”个数方法

    201502200101 zblogphp调整"显示常用标签"个数方法 6年前 (2015-02-20)    作者:iMoke    分类:原创·技术    阅读次数:2509 ...

最新文章

  1. 最小二乘拟合,L1、L2正则化约束--转
  2. boost::spirit模块演示了 AST 的生成,然后将其转储为人类可读的格式
  3. 【2012百度之星/初赛上】D:轮子上的度度熊
  4. Mybatis(20)注解实现二级缓存
  5. ​多大分辨率图像做分类更适合?浙大华为国科大等提出Dynamic Resolution Network,降低计算量还提性能!...
  6. python删除特定的几行数据_Python:分成几行,并根据搜索删除特定行 - python
  7. 小学生计算机学科竞赛类活动,自主招生/综合评价认可哪些科创类赛事?2020届参考...
  8. 从网络营销辞职转行软件测试,100天的心酸拿到9K,过程都是自己在苦撑,只因我...
  9. HDU2072 单词数【水题】
  10. Leetcode 038报数 题目分析 +python实现
  11. ENVI4.8下载与安装
  12. Oracle varchar和varchar2的区别
  13. VAR模型及格兰杰因果检验——基于tushare平台的数据
  14. 怎样成为时间管理的高手
  15. 局域网计算机网卡唯一标识,每块以太网卡都有一个用48个二进位表示的全球唯一的MAC地址,网卡安装在哪台计算机上,其MAC地址就成为该台计算机的 地址。...
  16. Java 习题 (12)
  17. 详解非局部均值滤波原理以及用MATLAB源码实现
  18. 苏州交管局领导参观闪马智能,考察视频分析交通领域应用
  19. 智能客服的解决方案以及相较于传统客服的技术优势
  20. webmatrix(WebMatrix升级)

热门文章

  1. notebook pip install 只有星号_意境深厚的感悟短语,通透走心,让人深有感触|未来|人世间|想要|只有你...
  2. 小程序如何引入阿里图标。
  3. oracle 中的日期函数
  4. 奇虎360:华尔街的新传奇
  5. 离散时间傅里叶变换,Z变换,离散傅里叶变换性质对比
  6. python批量合并excel固定单元格数据
  7. matlab伽玛分布如何表示,MATLAB如何使用gampdf函数计算伽马分布的概率密度
  8. getParameter与getAttribute两者的区别
  9. Windows10环境下Python 开发环境搭建
  10. 基于ijkplayer+Rxjava+Rxandroid+Retrofit2.0+MVP+Material Design的android万能播放器