我一直在使用 - 非常优秀 - playframework,并且很难找到有关如何使用play的模板引擎从视图访问Map数据结构的文档/示例。
更具体地说,我希望在迭代对象列表时访问Map,例如,
#{list items:itemList, as:'item'}
// access the map value using the ${item?.id} as the key
#{/list}
感谢您的光临。
答案 0 :(得分:21)
这是一个通用解决方案,可以在Play中使用 Map 进行迭代!框架:
在控制器中:
render(map);
在模板中:
#{list items:map.keySet(), as:'key'}
${map.get(key)}
#{/list}
你希望依靠一个 List 来迭代你的 Map 这一事实表明你正在为你的迭代过程搜索一种可预测的方式。
在这种情况下,请记住,如果您不使用有序/排序的 Map 实现,迭代将是不可预测的。
答案 1 :(得分:5)
假设您在控制器中执行:
render(map, itemList); //map is a Map
应该工作:
#{list items:itemList, as:'item'}
// access the map value using the ${item?.id} as the key
${map.get(item.?id)}
#{/list}
答案 2 :(得分:0)
我对游戏框架一无所知,但这可以在GSP中使用
#{list items:itemList, as:'item'}
${map[item?.id]}
#{/list}
答案 3 :(得分:0)
我正在地图上做这样的事情:
*{ Map<User, Integer> shareHolders = ... }*
#{list shareHolders.sort{it.value}.collect {k,v -> k}.reverse(), as:'holder'}
<tr>
<td>${holder.name}</td>
<td>${shareHolders[holder]}</td>
</tr>
#{/list}