2013-04-09 62 views
1

我使用的播放2.0.4框架,我可以成功地創建,通過把這個控制器部分接受Map[String, String]模板的模板:地圖[詮釋,字符串]在播放框架模板

Map<String, String> test = new HashMap<String, String>(); 
return ok(views.html.template.render(test)); 

template.scala.html

@(map : Map[String, String]) 

但是,如果我改變第一StringInt(在控制器部分整數),我得到這個異常:

error: method render in class template cannot be applied to given types; 

是否可以在Play框架中定義Integer - > String映射,如果是這樣,我該如何實現它?

編輯:

Map<Integer, String> test = new HashMap<Integer, String>(); 

而且在模板中:
當我在控制器修改代碼,發生異常

@(map: Map[Int, String]) 
+0

你的意思是將其更改爲'Integer'?或者你是否定義了自己的「Int」類? – 2013-04-09 12:17:24

+0

顯示修改後的外觀。 – maba 2013-04-09 12:19:03

+0

@maba,更新了我的文章 – Aerus 2013-04-09 12:28:45

回答

2

在您的模板中,您指定您的Map的密鑰爲scala.Int s,但您給它一個Mapjava.lang.Integer s作爲密鑰。

解決方法就是在你的模板改變行

@(map: Map[Integer, String]) 
0

與您的代碼,生成的render方法接受Map<Object, String>。然後,你可以提供這樣的地圖。

有從Java到Scala(從Scala到Java)的自動轉換助手。我不知道是否可以申請,如果這種情況下允許你在render方法中有Map<Integer, String>