Apache FreeMarker
2021-04-24 05:27
标签:herf prefix ram 对象 bcd efi ril 判断 case Apache FreeMarker 标签:herf prefix ram 对象 bcd efi ril 判断 case 原文地址:https://www.cnblogs.com/loveer/p/12235903.html基本语法
${…}:
称为interpolations,FreeMarker会在输出时用实际值进行替代。
:
FTL标记(FreeMarker模板语言标记),类似于HTML标记,为了与HTML标记区分
:
宏,自定义标签
1, 文本: 直接输出的部分
2, 注释: 格式部分,不会输出
3, 插值: 即 ${} 或 #{} 格式的部分,将使用数据模型中的部分替代输出
FreeMarker的插值有如下两种类型:
1, 通用插值 ${}
2, 数字格式化插值: #{expr} 或 #{expr;format}
通用插值:
对于通用插值,又可以分为以下4种情况:
1, 插值结果为字符串值: 直接输出表达式结果
字符串输出: ${"Hello ${name}"} / ${"Hello " + name}
字符串截取:
通过下标直接获取下标对应的字母: ${name[2]}
起点下标..结尾下标截取字符串: ${name[0..5]}
2, 插值结果为数字值: 根据默认格式将表达式结果转换成文本输出
${answer?string.number} //42
${answer?string.percent} //4200%
3, 插值结果为日期值: 根据默认格式将表达式结果转换成文本输出
${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")} //2008-04-08 08:08:08 Pacific Daylight Time
${lastUpdated?string("EEE, MMM d, yy")} //Tue, Apr 8, 03
${lastUpdated?string("EEEE, MMMM dd, yyyy, hh:mm:ss a '('zzz')'")} //Tuesday, April 08, 2003, 08:08:08 PM (PDT)
4, 插值结果为布尔值: 根据默认格式将表达式结果转换成文本输出
${foo?string("yes", "no")} //yes
数字格式化插值:
数字格式化插值可采用#{expr;format}形式来格式化数字,其中format可以是:
mX:小数部分最小X位
MX:小数部分最大X位
#{x; m1M2} //4.0
4, FTL指令: FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出
在FreeMarker中,使用FTL标签来使用指令,FreeMarker有3种FTL标签,这和HTML标签是完全类似的:
1, 开始标签:
2, 结束标签: #directivename>
3, 空标签:
使用标签时前面的符号 # 也可能变成 @, 如果该指令是一个用户指令而不是系统内建指令时, 应将 # 符号改成 @ 符号
:
在前面已经使用了多次,它用于为该模板页面创建或替换一个顶层变量
:
用来设置整个系统的一个环境:
比较运算符:
"*" : ${number1 * number2}
"/" : ${number1 / number2}
#if>
内建函数:
第一个字母大写:${data?cap_first}
所有字母小写:${data?lower_case}
所有字母大写:${data?upper_case}
html:对字符串进行HTML编码
trim:去掉字符串前后的空白字符
数值取整数:${floatData?int}
获取集合的长度:${users?size}
时间格式化:${dateTime?string("yyyy-MM-dd")}
空判断和对象集合:
! 指定缺失变量的默认值;一般配置变量输出使用
?? 判断变量是否存在。一般配合if使用 #if>
${user.id} - ${user.name}
#list>
${user!"变量为空则给一个默认值"}
#if>
Map集合:
直接通过 Key 获取 Value 值: ${mapData["name"]}
通过Key遍历Map:
Key: ${key} - Value: ${mapData[key]}
#list>
通过Value遍历Map:
Value: ${value}
#list>
List集合:
${value}#list>
include指令:
引入其他文件:
macro宏指令:
定义无参数的宏macro -- ${name}
#macro>
使用宏macro:
定义带参数的宏macro -- ${a+b+c}
#macro>
使用带参数的宏macro:
noparse指令:
指定FreeMarker不处理该指定里包含的内容
…#noparse>
Springboot + Freemarker 集成配置
Freemarker 页面目录配置
spring:
mvc:
view:
prefix: /templates/
suffix: .ftl