2011-01-05 74 views
4

我有許多散列表與整數作爲鍵,我想能夠在我的Freemarker模板中遍歷它們,但是,似乎沒有任何工作。Freemarker Hashtable <整數,字符串>,按鍵迭代

我試過例如,從Freemarker iterating over hashmap keys


<#list user.props() as prop> 
    ${prop} = ${user.get(prop)} 
</#list> 

這可能與絃樂作品的鑰匙,但它確實不是整數。我甚至無法通過具體值從我的散列表中檢索值。我所擁有的是:

Hashtalbe ht = new Hashtable(); 
ht.put(1, "hello"); 
datamodel.put("devices", ht);

(數據模型是傳遞給模板的散列映射)。

在模板中我做到以下幾點:


<#if devices??> 
<#list devices?keys as prop> 
    <p>${prop}</p> 
    <p>${devices.get(1)}</p> 

          
  
OR
<p>${devices.get(key)}</p>
OR
<p>${devices[key]}</p>
OR
<p>${devices[1]}</p> </#list> <#else> <p> no devices</p> </#if>

但什麼都沒有工作。你能幫我嗎?

PS。我將哈希錶轉換爲傳遞給模板,但這似乎有點解決方法。

最好的問候, 提莫菲

回答

7

對於那些誰可以跟隨我的腳步。 顯然,FreeMarker無法使用哈希表作爲參數。所以,我結束了創建這些哈希表INTI和的版本,因爲我有數字在我的哈希表的鍵,我能夠做我的模板如下:


<#list 1..100 as prop> 
    <#if hashtable[prop?string]??> 
     <option value='${prop}'<#if prop==selected> selected='selected'</#if>>${hashtable[prop?string]}</option> 
    <#else><#break> 
    </#if> 
</#list> 

好運氣,可以將力與你同在:)

+2

確實問題是FreeMarker只能使用String類型的鍵處理散列。 – idrosid 2011-03-22 19:07:37

+0

現在有更好的解決方案(使用'?api');請參閱[本FAQ條目](http://freemarker.org/docs/app_faq.html#faq_nonstring_keys)。 – ddekany 2015-03-01 15:08:54

1

這是FTL的散列類型不像Java的Maponly supports string keys的舊問題。但是,從2.3.22開始,你可以使用someMap?api.get(someNonStringKey)來解決這個問題。它需要一些配置才能啓用,但不會打破現有應用程序。請參閱this answerthis FAQ entry

相關問題