将包含用户定义对象的映射作为值传递给框架scala模板

时间:2014-06-24 15:52:03

标签: scala playframework playframework-2.0

我正在使用play framework v2.2并尝试将地图传递给scala模板。地图以字符串作为键,用户定义的对象作为其值。我的控制器是Java - 模板在Scala中。

控制器

 Map<String, UDObject> myMap = new HashMap<String, UDObject>();
 UDObject ud1 = new UDObject(a,b,c);  
 myMap.put("abcd", ud1);
 return ok(index.render(myMap));

Index.scala.html模板

@(myMap: Map[String, UDObject])  

当我尝试reload / eclipse或使用play run / start时 - 我收到一个编译错误,抱怨模板找不到用户定义的对象UDObject。知道我做错了吗?

2 个答案:

答案 0 :(得分:1)

您需要在Play模板的参数声明中使用完全限定名称,例如:

@(myMap: Map[String, com.example.UDObject])  

不幸的是没有办法import,所以模型,视图或Scala命名空间中的任何内容都不能使用全名。

答案 1 :(得分:1)

也可以为所有模板添加此导入。

templatesImport ++= Seq("com.example.UDObject")

现在您不需要使用班级的完全限定名称。