2016-01-20 50 views
0

在Java中我使用的是如何使用freemarker的清單,HashMap的變量

HashMap<String, String> 

中,然後在我的Freemarker模板可用。

我可以訪問它像這樣

Time:${candidFieldsList["STD-TIME_Environmental_1"]} 

這將我的地圖上提取的關鍵STD-TIME_Environmental_1值,這工作正常。現在我需要將它與列表結合起來以減少冗餘代碼。

我在模板中的面積需要重複4次

Time:${candidFieldsList["STD-TIME_Environmental_1"]} 

到其他部分的差別僅僅是數量,所以我試圖用列表來解決這個問題。但它不起作用

<#list 1..4 as x> 
Time:${candidFieldsList["STD-TIME_Environmental_"${x}]} 
</#list> 

不是返回鍵的值,而是返回解析器異常或此表達式的字符串。

freemarker.core.ParseException: Encountered "$" at line 4, column 50 in template.ftl. 

期待之一: 「]」 ...... 「」 「?」, 「!」 ...... 「[」 ...... 「(」 ... ... ...

回答

1

嘗試使用+運算符來連接字符串:

<#list 1..4 as x> 
    Time:${candidFieldsList["STD-TIME_Environmental_" + x]} 
</#list> 
+0

順便說一句,''STD-TIME_Environmental _ $ {x}「'也可以,只有'$ {x}'必須在字符串內(not-anymore),這與OP的嘗試不同。 – ddekany