第一次使用freemarker很不習慣,之前都是用velocity的。
@RequestMapping("/free.htm") public ModelAndView helloSpring(HttpServletRequest request, HttpServletResponse response) throws Exception { Map<String,Object> map = new HashMap<String,Object>(); List<Area> alist = new ArrayList<Area>(); Area area = new Area(); area.setName("我來啦~~"); alist.add(area); alist.add(area); alist.add(area); alist.add(area); alist.add(area); alist.add(area); map.put("h1", "hhh"); map.put("area", area); map.put("alist", alist); ModelAndView mv = new ModelAndView(); AreaPage page = new AreaPage(); page.setPageSize(50); List<Area> list = areaService.queryAllFirstArea(page); mv.addObject("list", list); mv.addObject("map", map); mv.addObject("area", area); mv.setViewName("index"); return mv; }
java代碼是這樣的。有map,有list,有對象實體。
基本數據類型,可以通過${data}來獲得。
如果是普通的java類,可以通過${obj.field}來獲得對象的屬性。
list取值
<# list as obj>
list存的是對象,取值${obj.field}。
list存的是基本數據類型,取值${data}。
</#list>
map取值,因為上面的java程序mv.addObject("map",map);
我舉這3種取值,后面就舉一反三吧。我在網上找了好久關於map怎么取值,試了都不對。然后我就想到velocity對map的取值。${map.key1.key2...}可以這樣通過.來獲取值。
我就想到了,結果可以的。
1、${map.h1}得到的是hhh。基本數據類型,但是String不是基本數據類型。也可以這么取。
2、${area.name}得到"我來啦~~",area對象的name屬性。
3、map里面裝了list。把上面的list稍微添加點東西就可以了。
<# map.list as obj>
list存的是對象,取值${obj.field}。
list存的是基本數據類型,取值${data}。
</#list>
這三種是最常遇到的了。
還有Map的key必須是字符串。
freemarker的引用的對象為空,調用了他的方法或屬性,會報錯。所以要加判斷,這點就沒velocity好了。freemarker挺強大的,還可以根據屬性排序。暫時就了解了這么多,感覺freemarker用的人不怎么多,所以只做了解。不深入研究。會用基本的差不多可以開發了。