在之前的博文 freemarker生成xml,htmL,word等等模板入門案例已經寫關於入門和數據結構;這裏在次說明一下;
在中文網上有關於數據模型的http://freemarker.foofun.cn/dgui_quickstart_datamodel.html的說明
1.這裏從實際使用說明,先看圖,後續看代碼(此部分代碼不可運行,缺省內容,工作代碼),後續有時間再調整一下,如有不對之處還請指正,謝謝!(開發XB文件(上報證監會臨時公告文件)期間所寫,感興趣的話可交流),其他html,word等都一樣,word中動態生成表格的行列後續補充。由於所有博文並無有序順序,請見諒!
2.代碼部分
public static void generateXBFile(Jjjlbggg bg){
Map<String,Object> map = new HashMap<String,Object>(); //數據模型
//新任基金經理的處理
List<Xrjjjl> xrList = bg.getXrjjjl(); //獲取實體中的list集合對象
if(xrList!=null) {
List<Map<String, Object>> xrjlList = new ArrayList<Map<String,Object>>(); //放入數據模型map中的List<map>,第一層
for (int i = 0; i < xrList.size(); i++) {Xrjjjl xr = xrList.get(i);
Map<String, Object> xrjl = new HashMap<String,Object>(); //放入list集合中的map
xrjl.put("XinRenJiJinJingLiXingMing",xr.getXrjjjlxm()); //新任基金經理姓名
xrjl.put("Gj",xr.getGj()); //國籍
xrjl.put("Xlxw",xr.getXlxw()); //學歷、學位
xrjl.put("Zczt",xr.getZczt()); //是否已按規定在中國基金業協會註冊/登記[11]
xrjl.put("Jlqtxx",xr.getJlqtxx()); //注[12]:(2713,文本框)
List<Glgmjj> mj = xr.getGlgmjj(); //管理過公募基金的名稱及期間,此處獲取的是List<Xrjjjl> xrList 中Xrjjjl的list
if(mj!=null) {
List<Map<String, Object>> mjList = new ArrayList<Map<String,Object>>(); //第二層list<map>
for (int j = 0; j < mj.size(); j++) {
Glgmjj glgmjj = mj.get(j);
Map<String, Object> mjmap = new HashMap<String,Object>();
mjmap.put("GuanLiGuoGongMuJiJinDeJiJinDaiMa",glgmjj.getJjzdm()); //基金主代碼
mjmap.put("GuanLiGuoGongMuJiJinDeJiJinMingCheng",glgmjj.getJjmc()); //基金名稱
mjList.add(mjmap);
}
xrjl.put("mjList", mjList); //放入第二層的list<map>中
}
xrjlList.add(xrjl); //放入數據模型map中的List<map>中的List<map>
}
map.put("xrjlList", xrjlList); //放入數據模型中的map
}
}
3.圖解結構
//爲了更清晰的理解,看下圖
頁面的話,則是取你存的名字,第一個名字也就是第一個List<map>,第二個則是你存到第第一個list<map>中的List<map>
說簡單就是Map中map
map.put("xrjlList", xrjlList);
xrjl.put("mjList", mjList);
對應實體就是list集合下的對象裏包含的list集合,模板中取的話就是類似點屬性的方式,主要也是key-value的結構,名稱的話不能相同,遵循map的規則吧,key唯一
4.模板文件中的內容,可以將裏面的內容全部去掉保留結構