将列表传递给Play框架中的视图

时间:2014-12-15 20:57:08

标签: list playframework mongodb-java

所以,我将Play框架与MongoDB结合使用。我正在尝试将List传递给我的视图以循环显示行。

控制器:

public static Result find() {
    List<DBObject> results = MongoController.find(MongoController.getLocalConnection("test"), "jobs");
    if (results == null) { 
        redirect("/");
    }
    return ok(find_job.render(results));
}

上面调用的MongoController使用以下函数(运行 - 尝试和测试):

public static List<DBObject> find(DB database, String collectionName) {
    DBCursor cursor = database.getCollection(collectionName).find();

    List<DBObject> items = new ArrayList<DBObject>();
    while (cursor.hasNext()) {
        items.add(cursor.next());
    }

    return items;
}

查看:

@(results : List[DBObject])

我收到的错误是:

Compilation error:

Not found: type DBObject

有人有指点吗?我道歉 - 我是这个框架的新手。

1 个答案:

答案 0 :(得分:0)

将东西导入本地命名空间时,旋转模板的工作方式完全相同。默认情况下,只将models包和一些其他Play包导入到视图命名空间中。之后进行的导入不会用于模板参数。

您需要使用完全限定的包名称:

@(results: List[com.mongodb.DBObject])

或者您可以添加到templateImports中的build.sbt键。即,您将此行放入build.sbt文件中:

TwirlKeys.templateImports += "com.mongodb.DBObject"

这会将以前的导入添加到所有已编译的模板中。请注意,它适用于Play 2.3.x.如果使用2.2.x,那么您可以使用以下代码:

templatesImport += "com.mongodb.DBObject"