6

次のエラーが表示されます。

コンパイル エラー [パッケージ views.json.Runs が存在しません]

明らかに存在する場合。何が間違っているのかわかりません。

コントローラーのアクションRuns:

@BodyParser.Of(play.mvc.BodyParser.Json.class)
public static Result view(Long task_id, Long run_id) {
    Run run = Run.find.byId(run_id);
    return ok(views.json.Runs.view.render(run));
}

app/views/Runs/view.scala.json:

@(run: Run)

{
    "started": "@run.started",
    "completed": "@run.completed"
}

いくつかの html テンプレートが動作するようになりましたが、2.0 で試したのはこれが最初の JSON テンプレートです。すでに可能な限り基本的なものになっているため、他に何を試すべきかわかりません。誰にもアイデアはありますか?

更新: 回避策についていくつかの提案を受け取りましたが、2.0 への変更をよりよく理解するためだけに、テンプレートを機能させる方法を知りたいと思っています。

4

4 に答える 4

7

デフォルトでは、html、xml、および txt のみがサポートされているようです。他のファイル拡張子と形式の場合は、追加の「templateTypes」を登録する必要があります(下の方にあるSBT 設定$PLAY_HOME/framework/src/sbt-plugin/src/main/scala/PlaySettings.scalaも参照してください)。

にある標準テンプレート タイプの定義を参照すると役立つ場合があります$PLAY_HOME/framework/src/play/src/main/scala/play/api/templates/Templates.scala

json をごまかして txt ファイルから提供することもできますが、メソッドresponse().setContentType("application/json")を呼び出す前に行ってください。render

于 2012-06-29T23:17:04.403 に答える
3

Jsonの場合、 Jsonヘルパーを使用してJson文字列を直接生成してみませんか。

public static Result view(Long task_id, Long run_id) {
    Run run = Run.find.byId(run_id);
    return ok(play.libs.Json.toJson(run));
}
于 2012-06-29T20:40:17.217 に答える
2

ドキュメントに従って、Json テキストを独自に記述するのではなく、Json ライブラリにデータをシリアル化させることをお勧めします。「Json レスポンスの提供」を参照してください。

于 2012-06-29T20:44:25.950 に答える
0

私はまだ理解していません、なぜ人々はビューで自分のJSONをレンダリングしたいのですか?

注:これは@nico_ekitoが以前に示したのと同じ方法であり、私は彼に完全に同意します。以下のコードは、JSONのオブジェクトの一部を選択する方法を示しています。

public static Result view(Long task_id, Long run_id){

    Run run = Run.find.byId(run_id);

    ObjectNode result = Json.newObject();
    result.put("started", run.started);
    result.put("completed", run.completed);

    return ok(Json.toJson(result));

}
于 2012-06-29T21:15:32.643 に答える