日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Freemarker的基本语法及入门基础

發(fā)布時(shí)間:2025/3/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Freemarker的基本语法及入门基础 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

freemarker的基本語法及入門基礎(chǔ)

一、freemarker模板文件(*.ftl)的基本組成部分
??????? 1. 文本:直接輸出的內(nèi)容部分
?? ??? ?2. 注釋:不會(huì)輸出的內(nèi)容,格式為<#--? 注釋內(nèi)容? -->
?? ??? ?3. 取值(插值):代替輸出數(shù)據(jù)模型的部分,格式為${數(shù)據(jù)模型}或#{數(shù)據(jù)模型}
?? ??? ?4. ftl指令:Freemarker指令,類似于HTML標(biāo)記。
?? ??? ????????????????????? 內(nèi)建指令:開始標(biāo)簽:<#directivename parameter>?????? 結(jié)束標(biāo)簽:</#directivename>????? 空標(biāo)簽:<#directivename parameter/>? ?
?? ??? ??? ??? ??? ??? ??? ? 自定義指令:開始標(biāo)簽:<@directivename parameter>?????? 結(jié)束標(biāo)簽:</@directivename>????? 空標(biāo)簽:<@directivename parameter/>?
?? ??? ??? ??? ??? ??? ??? ? 至于什么是內(nèi)建指令,什么是自定義指令?? 我會(huì)在下面敘述到。



二、Freemarker語法及使用方法
??????? 1. 取值(插值)指令及適用類型:
?? ??? ???????? (1) ${var}
?? ??? ??? ??? ???????? 適用類型:java中常用的八大基本類型以及我們的String引用類型,但是,freemarker中boolean類型顯示時(shí)true==yes? false==no
?? ??? ??? ??? ??? ??? ?示例:
?? ??? ??? ??? ??? ??? ???????? 在后臺文件中定義變量
?? ??? ??? ??? ??? ??? ??? ??? ???????? String strVar = "世界你好";
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?int intVar = 10;
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?boolean booVar = true;
?? ??? ??? ??? ??? ??? ??? ??? ?在頁面中獲取變量:
?? ??? ??? ??? ??? ??? ??? ??? ???????? String獲取:<font color="red"> ${strVar} </font><br>
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?int獲取:<font color="red"> ${intVar} </font><br>
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?boolean獲取:<font color="red"> ${booVar?string("yes","no")} </font>
?? ??? ??? ??? ??? ??? ??? ??? ?展示結(jié)果:
?? ??? ??? ??? ??? ??? ??? ??? ???????? String獲取:世界你好
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?int獲取:10
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?boolean獲取:yes
?? ??? ??? ??? ?(2)${var!}?
?? ??? ??? ??? ???????? 適用類型:對 null 或者不存在的對象進(jìn)行取值,可以設(shè)置默認(rèn)值,例:${var!'我是默認(rèn)值'}??? 即,有值時(shí)顯示正常值,無值時(shí)顯示默認(rèn)值
?? ??? ??? ??? ??? ??? ?示例:
?? ??? ??? ??? ??? ??? ???????? 在后臺文件中定義變量
?? ??? ??? ??? ??? ??? ??? ??? ???????? String strVar = "世界你好";
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?String str = null;
?? ??? ??? ??? ??? ??? ??? ??? ?在頁面中獲取變量:
?? ??? ??? ??? ??? ??? ??? ??? ???????? String獲取:<font color="red"> ${strVar!"我是空"} </font><br>
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?str獲取:<font color="red"> ${str!} </font><br>
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?str獲取:<font color="red"> ${str!"默認(rèn)"} </font><br>
?? ??? ??? ??? ??? ??? ??? ??? ?展示結(jié)果:
?? ??? ??? ??? ??? ??? ??? ??? ???????? String獲取:世界你好
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?str獲取:
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?str獲取:默認(rèn)
?? ??? ??? ??? ?(3)${封裝對象.屬性}
?? ??? ??? ??? ???????? 適用類型:對封裝對象進(jìn)行取值,例:${User.name}
?? ??? ??? ??? ??? ??? ?示例:
?? ??? ??? ??? ??? ??? ???????? 在后臺文件中封裝對象User[ name,? age ]
?? ??? ??? ??? ??? ??? ??? ??? ???????? String name = "姓名";
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?int age = 18;
?? ??? ??? ??? ??? ??? ??? ??? ?在頁面中獲取變量:
?? ??? ??? ??? ??? ??? ??? ??? ???????? name獲取:<font color="red"> ${User.name} </font><br>
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?age獲取:<font color="red"> ${User.age} </font><br>
?? ??? ??? ??? ??? ??? ??? ??? ?展示結(jié)果:
?? ??? ??? ??? ??? ??? ??? ??? ???????? name獲取:姓名
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?age獲取:18
?? ??? ??? ??? ?(4)${date?String('yyyy-MM-dd')}
?? ??? ??? ??? ???????? 適用類型:對日期格式進(jìn)行取值,在這里我要強(qiáng)調(diào)的是,定義Date類型的變量時(shí),java.util.Date無法輸出日期,須使用java.sql.Date
?? ??? ??? ??? ??? ??? ?示例:
?? ??? ??? ??? ??? ??? ???????? 在后臺文件中定義變量
?? ??? ??? ??? ??? ??? ??? ??? ???????? java.sql.Date date = new Date().getTime();
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?java.sql.Date time = new Date().getTime();
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?java.sql.Date datetime = new Date().getTime();
?? ??? ??? ??? ??? ??? ??? ??? ?在頁面中獲取變量:
?? ??? ??? ??? ??? ??? ??? ??? ???????? date獲取:<font color="red"> ${date?string('yyyy-MM-dd')} </font><br>
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?time獲取:<font color="red"> ${date?string('HH:mm:ss')} </font><br>
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?datetime獲取:<font color="red"> ${date?string('yyyy-MM-dd HH:mm:ss')} </font><br>
?? ??? ??? ??? ??? ??? ??? ??? ?展示結(jié)果:
?? ??? ??? ??? ??? ??? ??? ??? ???????? name獲取:姓名
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?age獲取:18
?? ??? ??? ??? ?(5)${var?html}
?? ??? ??? ??? ???????? 適用類型:轉(zhuǎn)義HTML內(nèi)容
?? ??? ??? ??? ??? ??? ?示例:
?? ??? ??? ??? ??? ??? ???????? 在后臺文件中封裝變量Menu[ name, model ]
?? ??? ??? ??? ??? ??? ??? ??? ???????? Menu m = new Menu();?
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?m.setName(" freemarker ");
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?m.setModel("<font color = 'red'>我只是個(gè)菜單</font>");
?? ??? ??? ??? ??? ??? ??? ??? ?在頁面中獲取變量:
?? ??? ??? ??? ??? ??? ??? ??? ???????? 非轉(zhuǎn)義獲取:<font color="red"> ${m.model} </font><br>
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?轉(zhuǎn)義獲取: ${m.model?html} </font><br>
?? ??? ??? ??? ??? ??? ??? ??? ?展示結(jié)果:
?? ??? ??? ??? ??? ??? ??? ??? ???????? 非轉(zhuǎn)義獲取:我只是個(gè)菜單
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?轉(zhuǎn)義獲取:<font color = 'red'>我只是個(gè)菜單</font>
?? ??? ??? ??? ?(6)<#assign num = 100 />
?? ??? ??? ??? ???????? 適用類型:定義變量,支持計(jì)算和賦值
?? ??? ??? ??? ??? ??? ?示例:
?? ??? ??? ??? ??? ??? ??? ??? ?在頁面中定義變量:
?? ??? ??? ??? ??? ??? ??? ??? ???????? <#assign num = 100 />
?? ??? ??? ??? ??? ??? ??? ??? ???????? num獲取:<font color="red"> ${num)} </font><br>
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?計(jì)算結(jié)果:<font color="red"> ${num * 10} </font><br>
?? ??? ??? ??? ??? ??? ??? ??? ?展示結(jié)果:
?? ??? ??? ??? ??? ??? ??? ??? ???????? num獲取:100
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?計(jì)算結(jié)果:1000
?? ??? ??? ??? ?(7)對List集合進(jìn)行取值
?? ??? ??? ??? ???????? <#list? list集合? as? item>?
?????????????????????????????? ${item}??? --取值
??????????????????????? </#list>
?? ??? ??? ??? ??? ??? ?示例:
?? ??? ??? ??? ??? ??? ???????? 在后臺文件中定義變量
?? ??? ??? ??? ??? ??? ??? ??? ???????? List<String> strList = new ArrayList<String>();
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?strList.add("第一個(gè)值");
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?strList.add("第二個(gè)值");
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?strList.add("第三個(gè)值");
?? ??? ??? ??? ??? ??? ??? ??? ?在頁面中獲取變量:
?? ??? ??? ??? ??? ??? ??? ??? ???????? <#list? strList? as? item>?
?????????????????????????????????????????????? ${item!}<br/>??? --取值
??????????????????????????????????????? </#list>
?? ??? ??? ??? ??? ??? ??? ??? ?展示結(jié)果:
?? ??? ??? ??? ??? ??? ??? ??? ???????? 第一個(gè)值
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?第二個(gè)值
??????????????????????????????????????? 第三個(gè)值
?? ??? ??? ??? ?(8)對Map集合進(jìn)行取值
?? ??? ??? ??? ???????? <#list map?keys as key>
?? ??? ??? ??????????????????? ${key}:${map[key]}
?? ??? ??? ??? ???????? </#list>
?? ??? ??? ??? ??? ??? ?示例:
?? ??? ??? ??? ??? ??? ???????? 在后臺文件中定義變量
?? ??? ??? ??? ??? ??? ??? ??? ???????? Map<String, Object> m = new HashMap<String, Object>();
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?m.put("name","姓名");
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?m.put("age",18);
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?m.put("sex","男");
?? ??? ??? ??? ??? ??? ??? ??? ?在頁面中獲取變量:
?? ??? ??? ??? ??? ??? ??? ??? ????????? <#list m?keys as key>
?? ??? ??? ???????????????????????????????????? ${key}:${m[key]}
?? ??? ??? ??? ????????????????????????? </#list>
?? ??? ??? ??? ??? ??? ??? ??? ?展示結(jié)果:
?? ??? ??? ??? ??? ??? ??? ??? ???????? name:姓名
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?age:18
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?sex:男
?? ??? ?2. 條件判斷指令:
?? ??? ???????? (1) if?
?? ??? ??? ??? ???????? 格式:<#if 條件>
?? ??? ??? ???????????????????????????? 輸出
?? ??? ??? ????????????????????????? </#if>
?? ??? ??? ??? ??? ??? ?示例:
?? ??? ??? ??? ??? ??? ??? ??? ?在頁面中定義變量并判斷條件:
?? ??? ??? ??? ??? ??? ??? ??? ???????? <#assign age = 18 /><br>
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?<#if age == 18>
?? ??? ??? ???????????????????????????????????? <font color="red"> age = 18</font>
?? ??? ??? ???????????????????????????? </#if>
?? ??? ??? ??? ??? ??? ??? ??? ?展示結(jié)果:
?? ??? ??? ??? ??? ??? ??? ??? ???????? age = 18
?? ??? ??? ??? ?(2) if - else?
?? ??? ??? ??? ???????? 格式:<#if 條件>
??????????????????????????????????????? 輸出
?? ??? ??? ???????????????????????? <#else>
?? ??? ??? ??? ??? ??? ???????????????? 輸出
?? ??? ??? ???????????????????????? </#if>
?? ??? ??? ??? ??? ??? ?示例:
?? ??? ??? ??? ??? ??? ???????? 在頁面中定義變量并判斷條件:
?? ??? ??? ??? ??? ??? ??? ??? ???????? <#assign age = 20 /><br>
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?<#if age == 18>
?? ??? ??? ???????????????????????????????????? <font color="red"> age = 18</font>
?? ??? ??? ??? ??? ??? ??? ??? ??? ???? <#else>
?? ??? ??? ??? ??? ??? ???????????????????????? <font color="red"> age != 18</font>
?? ??? ??? ???????????????????????????? </#if>
?? ??? ??? ??? ??? ??? ??? ??? ?展示結(jié)果:
?? ??? ??? ??? ??? ??? ??? ??? ???????? age != 18
?? ??? ??? ??? ?(3) if - elseif - else
?? ??? ??? ??? ???????? 格式:<#if 條件1>
??????????????????????????????????????? 輸出
?? ??? ??? ???????????????????????? <#elseif 條件2>
?? ??? ??? ??? ??? ??? ???????????????? 輸出
?? ??? ??? ???????????????????????? <#else>
?? ??? ??? ???????????????????????????? 輸出
?? ??? ??? ???????????????????????? </#if>
?? ??? ??? ??? ??? ??? ?示例:
?? ??? ??? ??? ??? ??? ???????? 在頁面中定義變量并判斷條件:
?? ??? ??? ??? ??? ??? ??? ??? ???????? <#assign age = 20 /><br>
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?<#if age &gt; 18>
?? ??? ??? ???????????????????????????????????? <font color="red">青年</font>
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?<#elseif age == 18>
?? ??? ??? ??? ??? ??? ???????????????????????? <font color="red"> 成年</font>
?? ??? ??? ??? ??? ??? ??? ??? ??? ???? <#else>
?? ??? ??? ??? ??? ??? ???????????????????????? <font color="red"> 少年</font>
?? ??? ??? ???????????????????????????? </#if>
?? ??? ??? ??? ??? ??? ??? ??? ?展示結(jié)果:
?? ??? ??? ??? ??? ??? ??? ??? ???????? 成年
?? ??? ??? ??? ?(4) switch? --常與case break default一起使用? 參數(shù)可為字符串
?? ??? ??? ??? ???????? 格式:<#switch var>
?? ???????????????????????????????? <#case 條件1>
?? ??? ??? ?????????????????????????????? 輸出
?? ??? ??? ???????????????????????? <#break>
?? ??? ??? ???????????????????????? <#case 條件2>
?? ??? ??? ?????????????????????????????? 輸出
?? ??? ??? ???????????????????????? <#break>
?? ??? ??? ???????????????????????? <#default>
?? ??? ??? ?????????????????????????????? 輸出
?? ???????????????????????????????? </#switch>
?? ??? ??? ??? ??? ??? ?示例:
?? ??? ??? ??? ??? ??? ??? ??? ?在頁面中定義變量并判斷:
?? ??? ??? ??? ??? ??? ??? ??? ??????? <#switch var="星期一">
?? ??????????????????????????????????? <#case "星期一">
?? ??? ??? ??????????????????????????????????? 油燜大蝦
?? ??? ??? ??????????????????????????? <#break>
?? ??? ??? ??????????????????????????? <#case "星期二">
?? ??? ??? ??????????????????????????????????? 炸醬面
?? ??? ??? ??????????????????????????? <#break>
?? ??? ??? ??????????????????????????? <#default>
?? ??? ??? ??????????????????????????????????? 肯德基
?? ??????????????????????????????????? </#switch>
?? ??? ??? ??? ??? ??? ??? ??? ?展示結(jié)果:
?? ??? ??? ??? ??? ??? ??? ??? ???????? 油燜大蝦
?? ??? ?3. 自定義函數(shù)、自定義指令:
?? ??? ???????? (1) 自定義函數(shù)
?? ??? ??? ??? ???????? 實(shí)現(xiàn)TemplateMthodModelEx
?? ??? ??? ??? ?(2) 自定義指令
?? ??? ??? ??? ???????? 實(shí)現(xiàn)TemplateDirectiveModel
?? ??? ??? ??? ??? ??? ?示例:
?? ??? ??? ??? ??? ??? ???????? <@自定義指令名稱 入?yún)?key-value格式) ; 出參(list格式)>
?? ??? ??? ??? ??? ??? ??? ??? ???????? 運(yùn)行條件
?? ??? ??? ??? ??? ??? ??? ??? ?</@自定義指令名稱>

?? ??? ??? ??? ??? ??? ??? ??? ?PS:不同的返回值用逗號( , )間隔開

?? ??? ?4.常用內(nèi)建函數(shù)、macro(宏指令)、function(函數(shù)指令):
?? ??? ???????? (1) 常用內(nèi)建函數(shù)
?? ??? ??? ??? ???????? 處理字符串:?
?? ??? ??? ??? ??? ??? ??? ? substring????????????????????????????????????????? 截取字符串,包頭不包尾(下標(biāo))
?? ??? ??? ??? ??? ??? ??? ? cap_first????????????????????????????????????????? 第一個(gè)字母大寫?
?? ??? ??? ??? ??? ??? ??? ? end_with?????????????????????????????????????????? 以什么字母結(jié)尾?? ?
?? ??? ??? ??? ??? ??? ??? ? contains??????????????????????????????????????????? 是否包含目標(biāo)字符串
?? ??? ??? ??? ??? ??? ??? ? date? datetime? time?????????????????????? 轉(zhuǎn)換成日期格式
?? ??? ??? ??? ??? ??? ??? ? starts_with????????????????????????????????????? 以什么字母開頭
?? ??? ??? ??? ??? ??? ??? ? index_of????????????????????????????????????????? 返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置(下標(biāo))
?? ??? ??? ??? ??? ??? ??? ? last_index_of????????????????????????????????? 獲取指定字符出現(xiàn)的最后位置(下標(biāo))
?? ??? ??? ??? ??? ??? ??? ? split????????????????????????????????????????????????? 分隔
?? ??? ??? ??? ??? ??? ??? ? trim????????????????????????????????????????????????? 去兩端空格
?? ??? ??? ???????????? 處理數(shù)字:
?? ??? ??? ??? ??? ??? ??? ? string???????????????????????????????????????????? ?
?? ??? ??? ??? ??? ??? ??? ? x?string("0.##")????????????????????????? 變成小數(shù)點(diǎn)后幾位
?? ??? ??? ??? ??? ??? ??? ? round????????????????????????????????????????????? 四舍五入
?? ??? ??? ??? ??? ??? ??? ? floor?????????????????????????????????????????????? 去掉小數(shù)點(diǎn)
?? ??? ??? ??? ??? ??? ??? ? ceiling???????????????????????????????????????????? 近1?? 變成整數(shù)
?? ??? ??? ???????????? 處理list:
?? ??? ??? ??? ??? ??? ??? ?? first:????????????????????????????????????????????? 取List值第一個(gè)值
?? ??? ??? ??? ??? ??? ??? ?? last:??????????????????????????????????????????????? 取List值最后一個(gè)值
?? ??? ??? ??? ??? ??? ??? ?? seq_contains:??????????????????????????????? 是否包含指定字符
?? ??? ??? ??? ??? ??? ??? ?? seq_index_of:?????????????????????????????? 指定字符所在位置
?? ??? ??? ??? ??? ??? ??? ?? size:??????????????????????????????????????????????? 集合大小
??? ??? ??? ??? ??? ??? ??? ?? reverse:????????????????????????????????????????? 集合倒序排列
?? ??? ??? ??? ??? ??? ??? ?? sort:??????????????????????????????????????????????? 對集合進(jìn)行排序
?? ??? ??? ??? ??? ??? ??? ?? sort_by:???????????????????????????????????????? 根據(jù)某一個(gè)屬性排序
?? ??? ??? ??? ??? ??? ??? ?? chunk:??????????????????????????????????????????? 分塊處理
?? ??? ??? ???????????? 其他:
?? ??? ??? ??? ??? ??? ??? ?? is_string:????????????????????????????????????? 是否為字符類型
?? ??? ??? ??? ??? ??? ??? ?? is_number:??????????????????????????????????? 是否為整數(shù)類型
?? ??? ??? ??? ??? ??? ??? ?? is_method:?????????????????????????????????? 是否為方法
?? ??? ??? ??? ??? ??? ??? ?? ():????????????????????????????????????????????????? 判斷整個(gè)變量
?? ??? ??? ??? ??? ??? ??? ?? has_content:??????????????????????????????? 判斷對象是否為空或不存在
?? ??? ??? ??? ??? ??? ??? ?? eval:?????????????????????????????????????????? 求值
?? ??? ??? ??? ?(2) macro(宏指令)
?? ??? ??? ??? ???????? 調(diào)用:<@macro_name param />
?? ??? ??? ??? ??? ??? ?語法:<#macro? 變量名? 參數(shù)> ?
?? ??? ??? ??? ??? ??? ???????????????????? <#nested/> ?
?? ??? ??? ??? ??? ??? ??? ??? ??? ?</#macro>
?? ??? ??? ??? ?(3) function(函數(shù)指令)
?? ??? ??? ??? ???????? 調(diào)用:${function_name(param)}
?? ??? ??? ??? ??? ??? ?語法:<#function? 變量名? 參數(shù)> ?
?? ??? ??? ??? ??? ??? ???????????? <#return> ?
?? ??? ??? ??? ??? ??? ??? ??? ??? ?</#function>

新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!

總結(jié)

以上是生活随笔為你收集整理的Freemarker的基本语法及入门基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。