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

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

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

    void

    FreeMarker 基礎知識 表達式

        表達式是FreeMarker的核心功能,F(xiàn)reeMarker中的插值支持多種表達式。

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

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

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

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

    4. 集合
    集合用中括號包括,集合元素之間用逗號分隔。
    使用數(shù)字范圍也可以表示一個數(shù)字集合,如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. 頂層變量
    所謂頂層變量就是直接放在數(shù)據(jù)模型中的值。輸出時直接用${variableName}即可。

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

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

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

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

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

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

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

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

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

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

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

    集合相關常用的內(nèi)建函數(shù):
    1. size: 獲得集合中元素的個數(shù);

    數(shù)字值相關常用的內(nèi)建函數(shù):
    1. int: 取得數(shù)字的整數(shù)部分。

    十、空值處理運算符
    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 閱讀(5282) 評論(0)  編輯  收藏 所屬分類: Freemarker

    主站蜘蛛池模板: 你是我的城池营垒免费看| 99久久免费观看| 亚洲国产精品无码AAA片| 久久久久久久久久国产精品免费 | 亚洲精品视频免费看| 国产精品极品美女免费观看| 中文字幕乱码系列免费| 亚洲另类自拍丝袜第1页| 免费无遮挡无码永久在线观看视频| www免费黄色网| 久久久久亚洲精品影视| 在线观看AV片永久免费| 一区二区三区精品高清视频免费在线播放| 国产亚洲AV手机在线观看| 麻豆最新国产剧情AV原创免费 | 免费无码中文字幕A级毛片| 亚洲精品天堂无码中文字幕| 亚洲精品无码午夜福利中文字幕| 在线观看免费精品国产| 中文字幕日韩亚洲| 鲁死你资源站亚洲av| 亚洲av中文无码乱人伦在线咪咕 | 97无码免费人妻超级碰碰碰碰 | 国产精品亚洲综合五月天| 中文字幕日韩亚洲| 日本无吗免费一二区| 91免费国产自产地址入| 中国一级特黄的片子免费| 日韩亚洲人成在线综合| 亚洲制服丝袜中文字幕| 亚洲av之男人的天堂网站| 国产一级理论免费版| 免费看韩国黄a片在线观看| 久久精品视频免费| 一区二区在线视频免费观看| 亚洲最大的成人网站| 亚洲精品美女在线观看| 久久精品国产亚洲麻豆| 亚洲国产一区明星换脸| 在线成人a毛片免费播放 | 91免费精品国自产拍在线不卡|