Freemaker如何遍歷key為non-string類型的map?


(一) 前置知識

Freemaker默認配置下會使用SimpleHash去包裝后台傳遞的hashmap,下段摘抄自官方reference

 

同樣,當你傳遞進去一個hashmap實例時,會替換為一個simpleHash。替換原則是在ObjectWrapper的實現類中編碼實現的。

下邊代碼摘抄自默認的ObjectWrapper實現DefaultObjectWrapper

 

(二) 導致的問題:

使用官方文檔中的遍歷map方式不能遍歷key為non-string類型的map。

<#list keys as key>${key} = ${h[key]}; </#list>

這個情況也被不斷的吐槽。

 

(三) 解決方案:

1. 更改spring mvc 中的配置

<bean id="freemarkerConfig"
          class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/WEB-INF/view/"/>
        <property name="freemarkerSettings">
            <props>
                <prop key="object_wrapper">freemarker.ext.beans.BeansWrapper</prop>
            </props>
        </property>
    </bean>

2. 使用以下方式進行遍歷

<#list testMap.keySet() as testKey>

       < option value="${testKey}" >

        ${testMap.get(testKey)}

     </option>

</#list>


免責聲明!

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



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