筆記 freemark list標簽迭代Map 集合排序問題


本博客是自己在學習和工作途中的積累與總結,僅供自己參考,也歡迎大家轉載,轉載時請注明出處。

  工作中出現一個比較特殊的問題,在模板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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM