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

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

这是地图:

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

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

【问题讨论】:

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


    【解决方案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}
        #{else}Your 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}
      #{else}No tasks on the list#{/else}
      Tip: Else can be used along with list
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-27
        • 1970-01-01
        • 2014-06-19
        • 1970-01-01
        • 2014-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多