如何使用playframework模板系统访问Map(groovy)

met*_*att 10 groovy playframework

我一直在使用 - 非常优秀 - playframework,并且无法使用play的模板引擎找到有关如何从视图访问Map数据结构的文档/示例.

更具体地说,我希望在迭代对象列表时访问Map,例如,

#{list items:itemList, as:'item'}
 // access the map value using the ${item?.id} as the key
#{/list}
Run Code Online (Sandbox Code Playgroud)

谢谢你的期待.

oxy*_*sis 21

这是使用Play 在Map上迭代的通用解决方案!框架:

在控制器中:

render(map);
Run Code Online (Sandbox Code Playgroud)

在模板中:

#{list items:map.keySet(), as:'key'}
   ${map.get(key)}
#{/list}
Run Code Online (Sandbox Code Playgroud)

您希望依赖侧面List迭代Map的事实表明您正在以可预测的方式搜索迭代过程.

在这种情况下,请记住,如果您不使用有序/有序Map实现,迭代将是不可预测的.

  • HashMap中给你一个无序,无序的 地图
  • LinkedHashMap维护插入顺序
  • TreeMap排序 映射的唯一JDK实现.默认情况下,它允许您按照元素的自然顺序进行迭代.您还可以指定自定义排序顺序并实现Comparable接口.这将导致您覆盖compareTo()方法.


Per*_*ega 5

假设您在Controller中执行:

render(map, itemList); //map is a Map
Run Code Online (Sandbox Code Playgroud)

应该工作:

#{list items:itemList, as:'item'}
 // access the map value using the ${item?.id} as the key
 ${map.get(item.?id)}
#{/list}
Run Code Online (Sandbox Code Playgroud)