У меня есть ряд хеш-таблиц с целыми в качестве ключей, и я хочу иметь возможность перебирать их в своих шаблонах Freemarker, однако ничего не работает.Freemarker Hashtable <Integer, String>, итерация по клавишам
Я попробовал пример из 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);
(DataModel быть HashMap передается в шаблон).
В шаблоне я сделать следующее:
<#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. Я преобразовал хэш-таблицу из в, чтобы передать ее в шаблон, но это похоже на обходное решение.
С наилучшими пожеланиями, Тимофея
Действительно проблема заключается в том, что FreeMarker может обрабатывать хэши только с ключами типа String. – idrosid
Теперь это лучшее решение (используя '? Api'); см. [этот пункт часто задаваемых вопросов] (http://freemarker.org/docs/app_faq.html#faq_nonstring_keys). – ddekany