1

playframework2アプリでいくつかのテストを行っていますが、モデルフォルダーにオブジェクトを配置しないと、ビューでオブジェクトを使用できないことに気付きました。

たとえば、SimpleObjectクラスをパッケージ名simpleに入れたとします。

SimpleObject.class:

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の場合と同じエラーが発生します。

ですから、ここでの私の質問は一種の建築です。これを処理する「プレイ2ウェイ」とは何ですか?ビューオブジェクトとビルダーを実装し、IndexResultオブジェクトをスローして、ビューオブジェクトを作成する必要がありますか?または、他のパッケージもスキャンするようにアプリに指示する方法はありますか?多分他の考え方がありますか?

4

2 に答える 2

3

ビューでインポートを使用してみることができます。つまり、次のようになります。

@import simple._

または、モデル/クラスをサブフォルダー/モデルのパッケージに整理してみることができます。

于 2012-10-08T16:41:01.030 に答える
1

ジョーダンが書いたように、パッケージが、、、(デフォルトでインポートされている)にない場合は、パッケージに追加importする必要があります。controllersmodelsviews

他の可能性は、宣言で正確なパッケージを指定することです。

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