有时希望与所有视图共享上下文变量,例如当前用户或导航状态。查看文档,我无法找到一种方法来共享模板引擎在所有视图中都可以访问的全局上下文变量。
这是由框架提供的,还是我最好将这些变量显式传递给所有视图,也许通过编写一个在其视图需要这些全局变量的所有控制器中调用的包装器方法?
有时希望与所有视图共享上下文变量,例如当前用户或导航状态。查看文档,我无法找到一种方法来共享模板引擎在所有视图中都可以访问的全局上下文变量。
这是由框架提供的,还是我最好将这些变量显式传递给所有视图,也许通过编写一个在其视图需要这些全局变量的所有控制器中调用的包装器方法?
您可以使用Session 和 Flash 范围
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>
}
当然,对于每个页面的数据(如 sample navId
),您也可以将其传递给视图,您可以在视图中声明除String
.