如何使用play framework 1.4.2在模板中迭代map

时间:2017-03-29 18:38:51

标签: groovy java-8 playframework-1.x

我有一张地图,其中键是一个对象,但值是一个列表对象。我正在使用play framework 1.4.2(使用groovy模板)。

这是地图:

Map<Object, List<Object>> map = new HashMap<>();

如何在模板中迭代地图值?

2 个答案:

答案 0 :(得分:2)

您可以使用entrySet()迭代地图,就像在java中一样(请参阅documentation),然后在groovy脚本中创建变量以获取值和键:

#{list items:map.entrySet(), as:'set' }
  ∗{print the key}*
  ${set.key}
  *{iterate over value list }∗
  #{list items: set.value, as:'itemValue'}
    ${itemValue}
  #{/list}

#{/list}

有关正在播放的groovy脚本的详细信息,请参阅:this SO answer

答案 1 :(得分:1)

要浏览地图值,您需要按以下方式调用Map#values()来获取值:

#{list map.values()}
Value of your map is ${_}
#{/list}

要浏览地图值列表的值,您需要使用 list 标记两次,如下所示:

#{list map.values()}
  #{list _}
    Value of your list is ${_}
  #{/list}
  #{else}Your list is empty#{/else}
#{/list}

使用列表标记的其他有用示例,您可以在cheatsheet播放文档中找到,例如:

#{list items:0..10, as:'i'} 
  ${i} 
#{/list}

#{list items:'a'..'z', as:'l'}
  ${l} ${l_isLast ?'':'|' }
#{/list}

#{list users}
  ${_}
#{/list}

Loop constructs
#{list items:task, as:'task'}
  ${task}
#{/list}
#{else}No tasks on the list#{/else}
Tip: Else can be used along with list