2016-01-20 3 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

BTW, '' STD-TIME_Environmental _ $ {x} "' тоже работает, только '$ {x}' должен находиться внутри строкового (не-больше) литерала, в отличие от попытки OP. – ddekany

Смежные вопросы