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

Posted

技术标签:

【中文标题】如何使用 play framework 1.4.2 在模板中迭代地图【英文标题】:How to iterate map in a template using play framework 1.4.2 【发布时间】:2017-03-29 18:38:51 【问题描述】:

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

这是地图:

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

如何遍历模板中的地图值?

【问题讨论】:

【参考方案1】:

您可以像在 java 中那样使用 entrySet() 来迭代地图(参见 this SO answer),然后在 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 脚本的更多信息,请参阅:Play documentation

【讨论】:

【参考方案2】:

要遍历地图值,您需要通过调用Map#values() 来获取值,如下所示:

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

要遍历地图值列表的值,您需要使用 list 标签两次,如下所示:

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

使用 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
#elseNo tasks on the list#/else
Tip: Else can be used along with list

【讨论】:

以上是关于如何使用 play framework 1.4.2 在模板中迭代地图的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Play Framework 显示 SQL?

如何构建版本独立的 Play!Framework 2 模块?

如何在 Play Framework 2.0 中使用相对路径访问资源文件?

如何使用 Scala 登录 Play Framework?

如何在 Play!Framework WebSockets ("wss://") 中使用 TLS

我们如何更改 Play Framework 内部使用的 EHCache 版本?