<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    void

    FreeMarker 基礎知識 表達式

        表達式是FreeMarker的核心功能,FreeMarker中的插值支持多種表達式。

    一、直接指定值
    直接指定值可以是字符串、數值、布爾值、集合及Map對象。

    1. 字符串
    直接指定字符串值使用單引號或雙引號限定。字符串中可以使用轉義字符”\"。如果字符串內有大量的特殊字符,則可以在引號的前面加上一個字母r,則字符串內的所有字符都將直接輸出。

    2. 數值
    數值可以直接輸入,不需要引號。FreeMarker不支持科學計數法。

    3. 布爾值
    直接使用true或false,不使用引號。

    4. 集合
    集合用中括號包括,集合元素之間用逗號分隔。
    使用數字范圍也可以表示一個數字集合,如1..5等同于集合[1, 2, 3, 4, 5];同樣也可以用5..1來表示[5, 4, 3, 2, 1]。

    5. Map對象
    Map對象使用花括號包括,Map中的key-value對之間用冒號分隔,多組key-value對之間用逗號分隔。
    注意:Map對象的key和value都是表達式,但key必須是字符串。

    二、輸出變量值
    FreeMarker的表達式輸出變量時,這些變量可以是頂層變量,也可以是Map對象的變量,還可以是集合中的變量,并可以使用點(.)語法來訪問Java對象的屬性。

    1. 頂層變量
    所謂頂層變量就是直接放在數據模型中的值。輸出時直接用${variableName}即可。

    2. 輸出集合元素
    可以根據集合元素的索引來輸出集合元素,索引用中括號包括。如: 輸出[“1”, “2”, “3”]這個名為number的集合,可以用${number[0]}來輸出第一個數字。FreeMarker還支持用number[1..2]來表示原 集合的子集合[“2”, “3”]。

    3. 輸出Map元素
    對于JavaBean實例,FreeMarker一樣把它看作屬性為key,屬性值為value的Map對象。
    輸出Map對象時,可以使用點語法或中括號語法,如下面的幾種寫法的效果是一樣的:
                 book.author.name                                                                                                                        
                 book.author["name"]                                                                                                                     
                 book["author"].name                                                                                                                     
                 book["author"]["name"]                                                                                                                  
    使用點語法時,變量名字有和頂層變量一樣的限制,但中括號語法沒有任何限制。

    三、字符串操作
    1. 字符串連接
    字符串連接有兩種語法:
    (1) 使用${..}或#{..}在字符串常量內插入表達式的值;
    (2)  直接使用連接運算符“+”連接字符串。
    如,下面兩種寫法等效:
                  ${"Hello, ${user}"}                                                                                                               
                  ${"Hello, " + user + "!"}                                                                                                        
    有一點需要注意: ${..}只能用于文本部分作為插值輸出,而不能用于比較等其他用途,如:
                  <#if ${isBig}>Wow!</#if>                                                                                                               
                  <#if "${isBig}">Wow!</#if>                                                                                                             
    應該寫成:
                  <#if isBig>Wow!</#if>                                                                                                                    

    2. 截取子串
    截取子串可以根據字符串的索引來進行,如果指定一個索引值,則取得字符串該索引處的字符;如果指定兩個索引值,則截取兩個索引中間的字符串子串。如:
                  <#assign number="01234">
                  ${number[0]} <#-- 輸出字符0 -->
                  ${number[0..3]} <#-- 輸出子串“0123” -->

    四、集合連接操作
          連接集合的運算符為“+”

    五、Map連接操作
    Map連接操作的運算符為“+”

    六、算術運算符
    FreeMarker表達式中支持“+”、“-”、“*”、“/”、“%”運算符。

    七、比較運算符
    表達式中支持的比較運算符有如下幾種:
    1. =(或者==): 判斷兩個值是否相等;
    2. !=: 判斷兩個值是否不相等;
    注: =和!=可以用作字符串、數值和日期的比較,但兩邊的數據類型必須相同。而且FreeMarker的比較是精確比較,不會忽略大小寫及空格。
    3. >(或者gt): 大于
    4. >=(或者gte): 大于等于
    5. <(或者lt): 小于
    6. <=(或者lte): 小于等于
    注: 上面這些比較運算符可以用于數字和日期,但不能用于字符串。大部分時候,使用gt比>有更好的效果,因為FreeMarker會把>解釋成標簽的結束字符??梢允褂美ㄌ杹肀苊膺@種情況,如:<#if (x>y)>。

    八、邏輯運算符
    1. &&: 邏輯與;
    2. ||: 邏輯或;
    3. !: 邏輯非
    邏輯運算符只能用于布爾值。

    九、內建函數
    FreeMarker提供了一些內建函數來轉換輸出,可以在任何變量后緊跟?,?后緊跟內建函數,就可以通過內建函數來轉換輸出變量。

    字符串相關常用的內建函數:
    1. html: 對字符串進行HTML編碼;
    2. cap_first: 使字符串第一個字母大寫;
    3. lower_case: 將字符串轉成小寫;
    4. upper_case: 將字符串轉成大寫;

    集合相關常用的內建函數:
    1. size: 獲得集合中元素的個數;

    數字值相關常用的內建函數:
    1. int: 取得數字的整數部分。

    十、空值處理運算符
    FreeMarker的變量必須賦值,否則就會拋出異常。而對于FreeMarker來說,null值和不存在的變量是完全一樣的,因為FreeMarker無法理解null值。
    FreeMarker提供兩個運算符來避免空值:
    1. !: 指定缺失變量的默認值;
    2. ??:判斷變量是否存在。
    !運算符有兩種用法:variable!或variable!defaultValue。第一種用法不給變量指定默認值,表明默認值是空字符串、長度為0的集合、或長度為0的Map對象。
    使用!運算符指定默認值并不要求默認值的類型和變量類型相同。
    ??運算符返回布爾值,如:variable??,如果變量存在,返回true,否則返回false。

    posted on 2011-08-16 19:13 void 閱讀(5281) 評論(0)  編輯  收藏 所屬分類: Freemarker

    主站蜘蛛池模板: 亚洲一区二区三区在线观看蜜桃 | 亚洲va在线va天堂va手机| 成人免费777777被爆出| 亚洲片国产一区一级在线观看| 久久久久久亚洲精品| 亚洲AV成人精品日韩一区| 野花香高清视频在线观看免费| 好男人看视频免费2019中文| 99热亚洲色精品国产88| 久久免费高清视频| 亚洲午夜在线电影| 免费AA片少妇人AA片直播| 亚洲国产精品va在线播放| 久久久国产精品无码免费专区| 亚洲男人电影天堂| 中文字幕乱码一区二区免费| 亚洲国产成人私人影院| aⅴ在线免费观看| 亚洲熟妇AV日韩熟妇在线| 日日操夜夜操免费视频| 亚洲一区二区三区久久| 日韩高清在线高清免费| 亚洲一区二区三区免费| 国产片免费在线观看| 特黄特色的大片观看免费视频| 最近最新中文字幕完整版免费高清| 久久青草亚洲AV无码麻豆| 久久精品国产免费观看三人同眠| 亚洲无码一区二区三区 | 一级毛片免费毛片一级毛片免费| 亚洲另类自拍丝袜第1页| 国产嫩草影院精品免费网址| 成在人线av无码免费高潮水| 久久久久亚洲AV无码观看| 国产精品国产自线拍免费软件| 高清永久免费观看| 亚洲香蕉久久一区二区| 亚洲第一福利网站在线观看| 精品国产日韩亚洲一区在线| 亚洲精品乱码久久久久久久久久久久 | 亚洲日本视频在线观看|