首頁技術(shù)文章正文

Freemarker基本指令語法和集合指令語法

更新時間:2023-06-21 來源:黑馬程序員 瀏覽量:

Freemarker是一款 模板引擎:即一種基于模板和要改變的數(shù)據(jù),并用來生成輸出文本(HTML網(wǎng)頁,電子郵件,配置文件,源代碼等)的通用工具。它不是面向最終用戶的,而是一個Java類庫,是一款程序員可以嵌入他們所開發(fā)產(chǎn)品的組件。

Freemarker基礎(chǔ)語法種類

1、注釋,即<#-- -->,介于其之間的內(nèi)容會被freemarker忽略

<#--我是一個freemarker注釋-->
2、插值(Interpolation):即${..}部分,freemarker會用真實的值代替${..}
Hello ${name}

3、FTL指令:和HTML標記類似,名字前加#予以區(qū)分,F(xiàn)reemarker會解析標簽中的表達式或邏輯。

<# >FTL指令</#>

4、文本,僅文本信息,這些不是freemarker的注釋、插值、FTL指令的內(nèi)容會被freemarker忽略解析,直接輸出內(nèi)容。

<#--freemarker中的普通文本-->
我是一個普通的文本

集合指令-List

集合指令List的指令格式如下:

<#list></#list>

例子:

<#list stus as stu>
   <tr>
      <td>${stu_index+1}</td>
      <td>${stu.name}</td>
      <td>${stu.age}</td>
      <td>${stu.money}</td>
   </tr>
</#list>

${k_index}:得到循環(huán)的下標,使用方法是在stu后邊加"_index",它的值是從0開始。

集合指令-Map

1.獲取map中的值

map['keyname'].property
map.keyname.property

2.遍歷map

<#list userMap?keys as key>
    key:${key}--value:${userMap["${key}"]}
</#list>

if指令

if指令的語法格式如下:

<#if expression>
<#else>
</#if>

需求:在list集合中判斷學(xué)生為小紅的數(shù)據(jù)字體顯示為紅色。

<#if stu.name='小紅'>
   <tr style="color: red">
       <td>${stu_index}</td>
       <td>${stu.name}</td>
       <td>${stu.age}</td>
       <td>${stu.money}</td>
   </tr>
<#else >
   <tr>
   <td>${stu_index}</td>
   <td>${stu.name}</td>
   <td>${stu.age}</td>
   <td>${stu.money}</td>
</tr>
</#if>

在freemarker中,判斷是否相等,=與==是一樣的。

FreeMarker表達式中完全支持算術(shù)運算,FreeMarker支持的算術(shù)運算符包括:

①加法:+

②減法:-

③乘法:*

④除法:/

⑤求模(求余):%

常見的比較運算符,和它們用途說明如下表:

比較運算符.png

注意事項:=和!=可以用于字符串、數(shù)值和日期來比較是否相等?

=和!=兩邊必須是相同類型的值,否則會產(chǎn)生錯誤?字

符串"x"、"x "、"X"比較是不等的.因為FreeMarker是精確比較?

gt代替>, FreeMarker會把>解釋成FTL標簽的結(jié)束字符,可使用括號避免這種情況,如:<#if (x>y)>

空值處理

1、判斷某變量是否存在使用"??"用法為:variable??,如果該變量存在,返回true,否則返回false。

例:為防止stus為空報錯可以加上判斷如下:

<#if stus??>
   <#list stus as stu>
       ......
   </#list>
</#if>

2、缺失變量默認值使用"!"

使用!要以指定一個默認值,當變量為空時顯示默認值,例如${name!''}表示如果name為空顯示空字符串。?

如果是嵌套對象則建議使用()括起來,例如${(stu.name)!''}表示,如果stu或name為空默認顯示空字符串。

內(nèi)建函數(shù)

內(nèi)建函數(shù)語法格式:變量+?+函數(shù)名稱
1.集合的大小。

${集合名?size}

2.日期格式化

顯示年月日: ${today?date}
顯示時分秒:${today?time}
顯示日期+時間:${today?datetime}
自定義格式化:${today?string("yyyy年MM月")}

3.內(nèi)建函數(shù)c

model.addAttribute("point", 102920122);

point是數(shù)字型,使用${point}會顯示這個數(shù)字的值,每三位使用逗號分隔。如果不想顯示為每三位分隔的數(shù)字,可以使用c函數(shù)將數(shù)字型轉(zhuǎn)成字符串輸出。

${point?c}

4.將json字符串轉(zhuǎn)成對象

一個例子:其中用到了assign標簽,assign的作用是定義一個變量。

<#assign text="{'bank':'工商銀行','account':'10101920201920212'}" />
<#assign data=text?eval />
開戶行:${data.bank}賬號:${data.account}


分享到:
在線咨詢 我要報名
和我們在線交談!