2013-04-09 88 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>