Freemarker语法收录

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":[....]
		}
	}
}
暂未知

若有补充,请在下方留言,分享成就你我!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羽轩GM

您的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值