我用Java编写我的模型,控制器等。
我有一个包含SortedMap<String, Foo>
的数据模型。地图实现类是TreeMap
。
如果在模板中,我会渲染地图的值(使用其toString()
),如下所示:
@theSortedMap.keySet()
...然后以预期的升序顺序打印出值。
但是,如果我使用@for
构造:
@for(keyValue <- theSortedMap.keySet()) {
@keyValue <br>
}
...然后迭代顺序变得不可预测。
如何迭代地图的键以保持所需的迭代顺序?
(这是预期的吗?或者这是Play中的错误吗?)
答案 0 :(得分:5)
有同样的问题。解决了这个问题
@for((key, value) <- map) {
<span>@key</span><span>@value</span>
}
答案 1 :(得分:1)
它与如何通过隐式转换将java集合转换为scala集合有关。似乎地图只会转换为普通scala地图,无论它们是否已排序。
绕过这个的一种方法是使用这个构造迭代集合的迭代器:
@theSortedMap.keySet.iterator.map { key => <li>@key</li>}