当前位置:   article > 正文

FreeMarker六:内建函数;_freemarker内置函数

freemarker内置函数

内建函数:是Freemarker的核心内容!!!

目录

一:Freemarker内建函数简介:

二:案例:

FreeMarkerSample3:

sample3.ftl:重点!!!

效果:

freeMarker中文参考手册:http://freemarker.foofun.cn/;可以在这个网站上详细了解Freemarker的内建函数等内容!!!


一:Freemarker内建函数简介:

内建函数是FreeMarker部分的核心内容!!!

(1)内建函数:FreeMarker自身提供的功能;

(2)自所以很多人使用Freemarker来替代JSP,就是FreeMarker提供了大量的内建函数来简化开发工作;

(3)一些常用功能,FreeMarker都有对应的函数;


二:案例:

FreeMarkerSample3:

其中,dataMap中增加了一些各类的数据;这个不是重点;

  1. package com.imooc.freemarker;
  2. import java.io.IOException;
  3. import java.io.OutputStreamWriter;
  4. import java.util.ArrayList;
  5. import java.util.Date;
  6. import java.util.HashMap;
  7. import java.util.LinkedHashMap;
  8. import java.util.List;
  9. import java.util.Map;
  10. import com.imooc.freemarker.entity.Computer;
  11. import freemarker.core.ParseException;
  12. import freemarker.template.Configuration;
  13. import freemarker.template.MalformedTemplateNameException;
  14. import freemarker.template.Template;
  15. import freemarker.template.TemplateException;
  16. import freemarker.template.TemplateNotFoundException;
  17. public class FreeMarkerSample3 {
  18. public static void main(String[] args) throws TemplateNotFoundException, MalformedTemplateNameException, ParseException, IOException, TemplateException {
  19. // TODO Auto-generated method stub
  20. // 1.加载模板
  21. // Configuration对象是FreeMarker的核心配置对象
  22. // 1.1创建核心配置对象
  23. Configuration config = new Configuration(Configuration.VERSION_2_3_31);// 因为我们下载的freemarker版本为2.3.31;所以这儿构造参数为2_3_31;
  24. // 1.2设置加载的目录; 这儿的意思:在FreeMarkerSample2这个类所在包中去加载指定的ftl文件;第二个参数传递一个空字符串代表是当前包;
  25. config.setClassForTemplateLoading(FreeMarkerSample3.class, "");
  26. // 1.3得到模板对象;;;; 以为1.2中设置了,只去扫描FreeMarkerSample1这个类所在包中的ftl,所以1.3这一步getTemplate()参数只需要指定ftl文件名字就可以了;
  27. Template t = config.getTemplate("sample3.ftl");
  28. // 2.创建数据 ;;;;;对于Freemaker来说,其数据就是一个Map类型的对象;
  29. // Map用来包含需要向模板中传入的数据
  30. Map<String,Object> dataMap = new HashMap<String,Object>();
  31. dataMap.put("name", "jack");
  32. dataMap.put("brand", "puma");
  33. dataMap.put("words", "apple blood haah");
  34. dataMap.put("n", 79367.3907);
  35. dataMap.put("date", new Date());
  36. List<Computer> computers = new ArrayList<Computer>();
  37. computers.add(new Computer("123","ThinkPad1",2,null,new Date(),1200f,new HashMap()));
  38. computers.add(new Computer("456","ThinkPad2",1,"李四",new Date(),3000f,new HashMap()));
  39. computers.add(new Computer("789","ThinkPad3",1,"王五",new Date(),2500f,new HashMap()));
  40. dataMap.put("computersList", computers);
  41. // 3.产生输出;;;这个输出,可以向文件输入,可以向控制台输出,可以向网络流中输出;向什么地方输出,取决于使用哪种类型的输出对象;
  42. t.process(dataMap, new OutputStreamWriter(System.out));
  43. // System.out:是向控制台输出的核心对象;System.out这个对象本质是一个PrintStream类型的对象,而process()方法的第二个参数需要是Writer类型的对象,所以使用new OutputStreamWriter(System.out),转换一下;
  44. }
  45. }

sample3.ftl:重点!!!

      (1)replace():替换字符串;

      (2)index_of()方法的参数可以是字符,也可以是字符串;

      (3)computersList.sort_by("price")会返回一个新的集合;

      (4)reverse:可以翻转list。

  1. ${name?cap_first}
  2. ${brand?upper_case}
  3. ${brand?length}
  4. ${words?replace("blood","*****")} <#-- 将words中的blood(如果words中有blood的话)替换掉; -->
  5. ${words?index_of("blood")} <#--index_of()方法的参数可以是字符,也可以是字符串 -->
  6. <#-- ?string也是内建函数,前面遇到过?string可以用于格式化输出;这儿string的作用类似于Java中的三目运算符 -->
  7. ${(words?index_of("blood") != -1)?string("包含敏感词汇","不包含敏感词汇")}
  8. ${n?round} <#-- 四舍五入 -->
  9. ${n?floor} <#-- 下取整 -->
  10. ${n?ceiling} <#-- 上取整 -->
  11. 公司共有:${computersList?size}台电脑
  12. 第一台电脑的型号为:${computersList?first.sn}
  13. 最后台电脑的型号为:${computersList?last.sn}
  14. <#-- computersList.sort_by("price")会返回一个新的集合,下面利用list标签对这个新的集合遍历输出-->
  15. <#list computersList?sort_by("price") as c>
  16. ${c.sn}-${c.price}
  17. </#list>
  18. <#-- 降序,增加一个reverse,翻转 -->
  19. <#list computersList?sort_by("price")?reverse as c>
  20. ${c.sn}-${c.price}
  21. </#list>

效果:

  1. Jack
  2. PUMA
  3. 4
  4. apple ***** haah
  5. 6 包含敏感词汇
  6. 79,367
  7. 79,367
  8. 79,368
  9. 公司共有:3台电脑
  10. 第一台电脑的型号为:123
  11. 最后台电脑的型号为:789
  12. 123-1,200
  13. 789-2,500
  14. 456-3,000
  15. 456-3,000
  16. 789-2,500
  17. 123-1,200

freeMarker中文参考手册:http://freemarker.foofun.cn/;可以在这个网站上详细了解Freemarker的内建函数等内容!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/658269
推荐阅读
  

闽ICP备14008679号