本博客是自己在學習和工作途中的積累與總結,僅供自己參考,也歡迎大家轉載,轉載時請注明出處。
工作中出現一個比較特殊的問題,在模板ftl文件中,一般用list迭代map
舉例:
后台:
// 傳入的參數
Map<Map<String,Object>> itemMap = new LinkedHashMap<Map<String,Object>>();
....... // put數據進入itemMap中
print: {2:{name:"king"},1:{name:"arise"}}
前端模板文件:
<#list itemMap?keys as key>
key: ${key}---- value: ${itemMap[key].name} <br />
</#list>
展示效果為:
key: 1 ----- value: arise
key: 2 ----- value: king
這里就有問題了,后台傳過來的是一個鏈表結構的map,應該以存入的順序進行展示才對.
原因:
<#list itemMap?keys as key> 中,list標記戶對所有的key進行一個默認的排序,所以順序與后台傳過來的不一樣
解決辦法目前有兩種(以后發現了再添加上來):
(1). [推薦] 后台傳過來的LinkedHashMap換成LinkedList,存儲鍵值對的方式也要變,如果需要在頁面展示key的話,並且前端展示用一下代碼
后台:
List<Map<String,Object>> itemList= new LinkedList<Map<String,Object>>();
....... // put數據進入itemMap中
print: [{key:2,name:"king"},{key:1,name:"arise"}]
前端模板文件:
<#list itemList as item>
key: ${item.key}---- value: ${item.name} <br />
</#list>
展示效果為:
key: 1 ----- value: arise
key: 2 ----- value: king
(2). 后台傳一個itemMap以及一個itemMap的所有鍵組成的list到ftl文件中,然后頁面遍歷由鍵組成的list,並在通過鍵得到itemMap中的value