2

我正在用 Java 编写模型、控制器等。

我有一个包含SortedMap<String, Foo>. 地图实现类是一个TreeMap.

如果在模板中,我toString()像这样渲染地图的值(使用它的 ):

@theSortedMap.keySet()

...然后这些值以预期的升序打印出来。

但是,如果我使用@for构造:

@for(keyValue <- theSortedMap.keySet()) {
  @keyValue <br>
}

...然后迭代顺序变得不可预测。

如何迭代地图的键以保持所需的迭代顺序?

(这是预期的吗?或者这是 Play 中的错误?)

4

2 回答 2

5

有同样的问题。像这样解决了

@for((key, value) <- map) {
    <span>@key</span><span>@value</span>
}
于 2013-08-20T10:53:09.300 回答
1

它与如何通过隐式转换将 java 集合转换为 scala 集合有关。无论是否排序,似乎地图都只会转换为普通的 scala 地图。

避免这种情况的一种方法是使用此构造来迭代集合的迭代器:

@theSortedMap.keySet.iterator.map { key => <li>@key</li>}
于 2013-07-16T10:09:11.100 回答