【问题标题】:how to access the request object in the scala template如何访问scala模板中的请求对象
【发布时间】:2012-04-27 17:32:05
【问题描述】:

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

【问题讨论】:

    标签: playframework


    【解决方案1】:

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

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

    【讨论】:

    • 您好,感谢您的回复。当您转到 Play 提供的 HTTP 对象时,您会看到: /** * 存储请求特定数据的可用空间 */ public Map args = new HashMap(16);跨度>
    • 这就是我想要存储我的页面列表的地方。 “pages”只是一个包含我自己的CustomPages对象列表的变量 List pages = CustomPage.find.all();你的第二点,是的,你是对的,我的错,我想访问 args,而不是请求。但从更大的角度来看,我真的想访问 Play 提供给我的 HTTP 类中的字段变量。当游戏需要我明确地将我的对象提供给 scala 模板时,我无法弄清楚如何做到这一点。
    猜你喜欢
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    相关资源
    最近更新 更多