1. 忽略本身语法在内的符号,如#、$
例如:mybatis中有语法#{id,jdbcType=VARCHAR}
<#noparse>#</#noparse>{id,jdbcType=VARCHAR}
springboot中读取yml配置的值,要保留$,需要用\\
转义,如:
@Value("\\${custom.plugin.showSql.enable:true}")
private Boolean showSqlEnable;
2. 若渲染的变量内容为空
若对象obj的属性var为null,则默认填充空串
${obj.var!'默认值'}
输出:默认值
3. 字符串截取子串、连接字符串
(1)例如:#FF00FF颜色值,要取除#以外的值
${obj.fontColor?substring(1)!'FF0000'}
(2)连接字符串,如user.name的值为Bill
${"Hi "+user.name+",welcome to China"+" !"}
输出:Hi Bill,welcome to China !
4. 大小写转换
假设obj.tableName的值为t_b_user
(1)全大写,例如:将对象obj的tableName的值转换为全大写
${obj.tableName?upper_case}
输出:T_B_USER
(2)全小写
例如:将对象obj的tableName的值转换为全小写
${obj.tableName?lower_case}
输出:t_b_user
(3)首字母大写
${obj.tableName?cap_first}
输出:T_b_user
(4)首字母小写
${obj.tableName?uncap_first}
输出:t_b_user
5. 分支判断
5.1 if判断
例如:下面判断对象obj的convert的值为1,把obj的tableName转换为全大写,如果convert值为-1,把obj的tableName转换为全小写,否则原样显示
- 注意:obj.convert??表示对obj.convert进行空判断,若obj.convert为null,则&&和if里面的语句将不会执行
<#if obj.convert??&&obj.convert==1>
${obj.tableName?upper_case}
<#elseif obj.convert??&&obj.convert==-1>
${obj.tableName?lower_case}
<#else>
${obj.tableName}
</#if>
5.2 switch条件分支
例如:要判断变量col的属性formType是什么类型
<#switch col.formType>
<#case "text">
这是文本输入框
<#break>
<#case "password">
这是密码输入框
<#break>
<#case "select">
这是下拉选择框
<#break>
<#case "radio">
这是单选框
<#break>
<#case "checkbox">
这是复选框
<#break>
<#case "switch">
这是开关
<#break>
<#case "textarea">
这是文本域
<#break>
<#default>
这是其他类型
</#switch>
6.列表循环遍历
例如:遍历obj.tables,打印tableName
<#list obj.tables as tab>
${tab.tableName}
</#list>
若要取列表的大小,用${list?size}
而不是${list.size}
${obj.tables?size}
7. 列表升序、降序遍历
(1)升序遍历,用sort_by("字段")
<#list list?sort_by("字段 ") as item>
</#list>
(2)降序遍历,用sort_by("字段")?reverse
<#list list?sort_by("字段 ")?reverse as item>
</#list>
8. 比较大小
(1)比较对象obj的属性var大于0,用gt
<#if obj.var gt 0>
</#if>
(2)比较对象obj的属性var大于等于0,用gte
<#if obj.var gte 0>
</#if>
(3)比较对象obj的属性var小于0,用lt
<#if obj.var lt 0>
</#if>
(4)比较对象obj的属性var小于等于0,用lte
<#if obj.var lte 0>
</#if>
9. 日期格式化
${.now?string("yyyy-MM-dd HH:mm:ss zzzz")}
输出:2020-11-07 20:20:44 Pacific Daylight Time
${.now?string("EEE,MMM d, ''yy")}
输出:Sat,Nov 7,'20
${.now?string("EEEE,MMM dd,yyyy, hh:mm:ss a '('zzz')'")}
输出:Sat,Nov 07,2020,20:20:44 PM (PDT)
10. 布尔类型转义
例如obj.var1的值为true,obj.var2的值为false
${obj.var1?string("yes","no")}
输出:yes
${obj.var2?string("yes","no")}
输出:no
11.去掉字符串的首位空格
例如:obj.var的值为" I'm Bill ! "
${obj.var?trim}
输出:I'm Bill !
12. 获取一个对象的另一个对象的属性
例如:有数据结构
{
"alarmService":{
"service":{
"serviceName":"告警服务名称",
"tasks":[....]
}
}
}
暂未知
若有补充,请在下方留言,分享成就你我!