第一次使用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用的人不怎么多,所以只做了解。不深入研究。會用基本的差不多可以開發了。
