在所有Play 2.0项目视图中使变量可访问

时间:2012-11-16 14:13:18

标签: java playframework-2.0

有时需要与所有视图共享上下文变量,例如当前用户或导航状态。浏览文档,我无法找到在所有视图中共享模板引擎可访问的全局上下文变量的方法。

这是由框架提供的,还是我最好明确地将这些变量传递给所有视图,可能是通过编写一个在所有控制器中调用的包装器方法,其视图需要这些全局变量?

1 个答案:

答案 0 :(得分:0)

您可以使用Session and Flash scopes

public static Result index() {
    // session is good for storing session data such as for an example logged user's info
    session("username", "John Doe");

    // flash is available only for next request (in this case for view rendering process)
    flash("navId", "mainPage");

    return ok(index.render("ellou' World"));
}

index.scala.html

@(message: String)

@main(message) {
    @if(flash.get("navId")=="mainPage"){<h1>Great! You're on main page again</h1>}
    <div>You're logged as @session.get("username")</div>
}

当然,对于每个页面的数据(例如样本navId),您也可以将其传递给视图,您可以在其中声明String以外的所需类型。