по скорости вы можете перебирать запись set () хеш-карты Java? - PullRequest
40 голосов
/ 12 января 2010

Можете ли вы сделать что-то подобное в шаблоне скорости?

#set ($map = $myobject.getMap() )
#foreach ($mapEntry in $map.entrySet())
    <name>$mapEntry.key()</name>
    <value>$mapEntry.value()</value>
#end

выводит пустые теги примерно так:

<name></name> 

и

<value></value> 

Что я делаю не так?

Ответы [ 4 ]

100 голосов
/ 12 января 2010

Ваша ошибка относится к ключу и значению как к методам (с завершающими скобками "()"), а не как к свойствам. Попробуйте это:

#set ($map = $myobject.getMap() )
#foreach ($mapEntry in $map.entrySet())
    <name>$mapEntry.key</name>
    <value>$mapEntry.value</value>
#end

Другими словами, используйте либо свойство, например mapEntry.key , либо метод, например mapEntry.getKey () .

5 голосов
/ 27 марта 2014

Я ищу способ перебрать HashMap по скорости, и это тоже будет работать.

#set ($map = $myobject.getMap())
#foreach( $key in $map.keySet())
      <name>$key</name>
      <value>$resume.get($key)</value>
#end

Точно так же, как вы проходили бы через HashMap в Java.

1 голос
/ 01 ноября 2016

Чтобы уточнить (я не могу комментировать), в общем, вы можете использовать либо методы get Java, либо заменить их на соответствующее имя без маленькой буквы и без ().

То есть $mapEntry.getKey() или map.key.

0 голосов
/ 30 января 2017

Здесь значение

itemsValue={data1=1,data2=2,data3=3}

Итак, нам нужно перебрать группу значений;

foreach ($key in ${itemsValue.keySet()})
   if($itemsValue.get($key)==1)
        Condition
   end
end

В приведенном выше коде мы видим, что значение будет похоже на «data1, data2 и т. Д.» но после использования get () мы можем получить значение экземпляра.

...