我正在使用Play 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])
但是,如果我将第一个String
更改为Int
(控制器部分中的整数),我会遇到以下异常:
error: method render in class template cannot be applied to given types;
是否可以定义整数 - &gt; Play框架中的字符串映射,如果是,我该如何实现呢?
修改
当我将控制器中的代码更改为:
Map<Integer, String> test = new HashMap<Integer, String>();
在模板中:
@(map: Map[Int, String])
答案 0 :(得分:2)
在您的模板中,您指定Map
的密钥为scala.Int
,但是您为Map
提供了java.lang.Integer
个密钥。
解决方案是将模板中的行更改为
@(map: Map[Integer, String])
答案 1 :(得分:0)
使用您的代码,生成的render
方法会接受Map<Object, String>
。然后,您可以提供这样的地图。
从Java到Scala(以及从Scala到Java)都有自动转换帮助程序。我不知道是否可以申请,如果这种情况允许您在Map<Integer, String>
方法中使用render
。