在Play框架模板中映射[Int,String]

时间:2013-04-09 12:13:20

标签: java templates playframework-2.0

我正在使用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])

2 个答案:

答案 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