1

我正在使用 playframework2 应用程序进行一些测试,我注意到如果我不将我的对象放在模型文件夹中,我将不允许在我的视图中使用它们。

例如,假设我将一个类 SimpleObject 放在一个简单的包名中。

简单对象类:

public class SimpleObject {

    public SimpleObject(){}

    public SimpleObject(String name){
        this.name = name;
    }

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

在我的应用程序控制器中,我使用新的 SimpleObject 渲染视图:

public static Result doSomeAction() {
    SimpleObject simpleObject = new SimpleObject("test");       
    return ok(test.render(simpleObject));
}

在我的test.scala.html 中

@(simpleObject: SimpleObject)
@main("Here is the result:") {
    @{simpleObject.getName()}
}

这会导致错误:

not found: type SimpleObject

如果我将 SimpleObject 移动到包模型中,它会编译并工作。

在我的另一个应用程序中,我实现了 Elasticsearch 模块。在那里我收到一个我想在我的视图中循环的 IndexResult。我得到与 SimpleObject 相同的错误。

所以我在这里的问题有点建筑学。处理这个问题的“play 2 way”是什么?我应该实现视图对象和构建器,将 IndexResult 对象放入并创建视图对象吗?或者有没有办法告诉我的应用程序也扫描其他包?或许还有别的思路?

4

2 回答 2

3

您可以尝试在视图中使用导入,即:

@import simple._

或者您可以尝试在模型的子文件夹/包中组织您的模型/类。

于 2012-10-08T16:41:01.030 回答
1

正如乔丹所写import的那样,如果它不在controllers, models, 中views(默认情况下是导入的),则您必须将其放入您的包中...

其他可能性是在声明中指定确切的包:

@(simpleObject: my.own.package.which.isnt.in.models.or.controllers.SimpleObject)
@main("Here is the result:") {
    @{simpleObject.getName()}
}
于 2012-10-08T18:40:35.933 回答