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 閱讀(5291) 評論(0)  編輯  收藏 所屬分類: Freemarker

          主站蜘蛛池模板: 迭部县| 平邑县| 长治县| 广安市| 清新县| 聊城市| 濮阳市| 六枝特区| 长兴县| 雷波县| 冕宁县| 贵阳市| 高台县| 沙河市| 沭阳县| 泰安市| 渑池县| 九江市| 灵璧县| 松江区| 石家庄市| 万全县| 平罗县| 谷城县| 乌兰浩特市| 类乌齐县| 大理市| 本溪市| 尼玛县| 滨海县| 宁陕县| 庆元县| 盐山县| 成都市| 广宗县| 池州市| 涟源市| 仪陇县| 渭南市| 洛南县| 犍为县|