4

@Withでマークしたコントローラーがあります

@With(InitPages.class)
public class Application extends Controller {

    public static Result index() {

        return ok(mainpage.render());
        //return ok(index.render("Your new application is ready."));
    }

}

この InitPages クラスは次のことを行います。

public class InitPages extends Action.Simple {

    public Result call(Http.Context ctx) throws Throwable {

        List<CustomPage> pages = CustomPage.find.all();
        ctx.args.put("pages", pages);

        Logger.info("Calling action for " + ctx);
        return delegate.call(ctx);
    }
}

「pages」変数をscalaテンプレートに入れたいのですが、正しい方法は何ですか? Play フレームワークのドキュメントでは、オブジェクトをリクエスト マップに配置するために、このように行う必要があると説明していますが、scala テンプレートに表示するにはどうすればよいでしょうか?

これのさまざまなバージョンを試しました:

@for(page <- request.pages) {
   <li class="parent"> <a href="#sds"> @page.title </a> </li>
}

@for(page <- pages) {
   <li class="parent"> <a href="#sds"> @page.title </a> </li>
}

しかし運が悪い http://www.playframework.org/documentation/2.0/JavaActionsComposition

4

1 に答える 1

0

私はJavaバージョンのPlay2.0を使用しておらず、Scalaのみを使用していますが、エラーが発生する可能性があると思われる領域がいくつかあります(間違っている可能性があります)。

  • 通常、リクエストオブジェクト(何らかの方法で拡張した場合を除き、コードを添付してください)には、「ページ」メンバーがありません。メソッドを呼び出したい場合がありますget("pages")
  • ページがコンテキストに追加されますが、リクエストからページを取得しようとします。それらは同等ですか?どういうわけかデータをコピーしましたか?または、Responseオブジェクトにアクセスする必要がありますか?
于 2012-04-27T09:32:05.490 に答える