如何访问scala模板中的请求对象

时间:2012-04-26 22:01:12

标签: playframework

我有一个用@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 Framework在其文档中描述了它应该像这样完成,ergo将对象放在请求映射中,但是如何在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

1 个答案:

答案 0 :(得分:0)

我没有使用过Java 2.0的Java版本,只有Scala,但有几个方面我觉得你可能有错误(我可能错了):

  • 通常是请求对象(除非你以某种方式扩展它,如果是这样,请附上代码),没有“pages”成员。您可能需要调用方法get("pages")
  • 页面已添加到Context,但您尝试从请求中检索它。它们是等价的吗?你以某种方式复制数据了吗?或者您需要做的是访问Response对象?