1

在播放框架的(2.0)应用程序控制器中,我正在创建一个 java LinkedHashMap<String, List<MyObject>)来维护我插入字符串键的顺序。

我尝试在模板中迭代这个 LinkedHashMap,如下所示:-

@for(currentKey <- linkedHashMapInstance.keySet()){
 ....
   loop  myObjectList for the currentKey
 ....
}

每当我刷新屏幕时,我都会得到随机顺序。

然后我试图改变循环的逻辑

@for((currentKey , currentList) <- mapOfCards){
 .. used the key and the list
}

现在我得到了一致的顺序,但不是我插入的顺序。服务器端的调试日志显示了正确的顺序。

我假设 Java 中的 LinkedHashMap 将保持插入的顺序,即使它在 scala 模板中呈现。

我在这里做错了吗?

4

2 回答 2

2

可能与Java->Scala转换有关。

尝试.asScala像这样使用:

@for((currentKey , currentList) <- mapOfCards.asScala){
 .. 
}

更新 :

它适用于:

@for((currentKey , currentList) <- scala.collection.mutable.LinkedHashMap.empty[String, String] ++ mapOfCards) {

}
于 2012-11-30T07:58:30.290 回答
2

几个月前我也遇到过同样的问题。正如@nico_ekito 指出的那样,这是与Java-> Scala 转换有关的问题。

要修复它,请尝试以下操作:

@for((currentKey , currentList) <- SortedMap.empty[String, String] ++ mapOfCards) {

}

通过替换[String, String]为您的(currentKey , currentList).

希望有帮助,它对我有用。

于 2013-01-04T10:12:58.520 回答