隨筆-124  評論-49  文章-56  trackbacks-0
          集合

          集合以方括號包括,各集合元素之間以英文逗號","分隔,看如下的例子:
          <#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as x>
          ${x}
          </#list>
          輸出結果是:
          星期一
          星期二
          星期三
          星期四
          星期五
          星期六
          星期天

          除此之外,集合元素也可以是表達式,例子如下:
          [2 + 2, [1, 2, 3, 4], "whatnot"]

          還可以使用數字范圍定義數字集合,如2..5等同于[2, 3, 4, 5],但是更有效率.注意,使用數字范圍來定義集合時無需使用方括號,數字范圍也支持反遞增的數字范圍,如5..2

          Map對象

          Map對象使用花括號包括,Map中的key-value對之間以英文冒號":"分隔,多組key-value對之間以英文逗號","分隔.下面是一個例子:
          {"語文":78, "數學":80}
          Map對象的key和value都是表達式,但是key必須是字符串


          輸出變量值

          FreeMarker的表達式輸出變量時,這些變量可以是頂層變量,也可以是Map對象中的變量,還可以是集合中的變量,并可以使用點(.)語法來訪問Java對象的屬性.下面分別討論這些情況

          1,頂層變量
          所謂頂層變量就是直接放在數據模型中的值,例如有如下數據模型:
          Map root = new HashMap();   //創建數據模型
          root.put("name","annlee");   //name是一個頂層變量

          對于頂層變量,直接使用${variableName}來輸出變量值,變量名只能是字母,數字,下劃線,$,@和#的組合,且不能以數字開頭號.為了輸出上面的name的值,可以使用如下語法:
          ${name}

          2,輸出集合元素
          如果需要輸出集合元素,則可以根據集合元素的索引來輸出集合元素,集合元素的索引以方括號指定.假設有索引:
          ["星期一","星期二","星期三","星期四","星期五","星期六","星期天"].該索引名為week,如果需要輸出星期三,則可以使用如下語法:
          ${week[2]}   //輸出第三個集合元素

          此外,FreeMarker還支持返回集合的子集合,如果需要返回集合的子集合,則可以使用如下語法:
          week[3..5]   //返回week集合的子集合,子集合中的元素是week集合中的第4-6個元素

          3,輸出Map元素
          這里的Map對象可以是直接HashMap的實例,甚至包括JavaBean實例,對于JavaBean實例而言,我們一樣可以把其當成屬性為key,屬性值為value的Map實例.為了輸出Map元素的值,可以使用點語法或方括號語法.假如有下面的數據模型:
          Map root = new HashMap();
          Book book = new Book();
          Author author = new Author();
          author.setName("annlee");
          author.setAddress("gz");
          book.setName("struts2");
          book.setAuthor(author);
          root.put("info","struts");
          root.put("book", book);

          為了訪問數據模型中名為struts2的書的作者的名字,可以使用如下語法:
          book.author.name    //全部使用點語法
          book["author"].name
          book.author["name"]    //混合使用點語法和方括號語法
          book["author"]["name"]   //全部使用方括號語法

          使用點語法時,變量名字有頂層變量一樣的限制,但方括號語法沒有該限制,因為名字可以是任意表達式的結果.

          集合連接運算符

          這里所說的集合運算符是將兩個集合連接成一個新的集合,連接集合的運算符是+,看如下的例子:
          <#list ["星期一","星期二","星期三"] + ["星期四","星期五","星期六","星期天"] as x>
          ${x}
          </#list>
          輸出結果是:星期一 星期二 星期三 星期四 星期五 星期六 星期天

          Map連接運算符

          Map對象的連接運算符也是將兩個Map對象連接成一個新的Map對象,Map對象的連接運算符是+,如果兩個Map對象具有相同的key,則右邊的值替代左邊的值.看如下的例子:
          <#assign scores = {"語文":86,"數學":78} + {"數學":87,"Java":93}>
          語文成績是${scores.語文}
          數學成績是${scores.數學}
          Java成績是${scores.Java}
          輸出結果是:
          語文成績是86
          數學成績是87
          Java成績是93

          posted on 2009-11-25 10:06 junly 閱讀(2594) 評論(0)  編輯  收藏 所屬分類: freemark/velocity
          主站蜘蛛池模板: 特克斯县| 鄂尔多斯市| 岚皋县| 临西县| 德州市| 墨江| 磐安县| 宣恩县| 溧水县| 阿鲁科尔沁旗| 原平市| 临邑县| 镇康县| 昌都县| 黔东| 富蕴县| 贺兰县| 册亨县| 宜兴市| 吉林省| 靖州| 三原县| 章丘市| 达尔| 保靖县| 鄂伦春自治旗| 丰原市| 济源市| 安国市| 九江市| 彭阳县| 卢湾区| 确山县| 临漳县| 岳阳县| 周至县| 毕节市| 贡嘎县| 泸定县| 会同县| 余干县|