相关疑难解决方法(0)

如何避免在play2中到处传递参数?

在play1中,我通常会在操作中获取所有数据,直接在视图中使用它们.由于我们不需要在视图中显式声明参数,因此这非常简单.

但是在play2中,我发现我们必须request在视图的头部声明所有参数(包括),在动作中获取所有数据并将它们传递到视图中会非常无聊.

例如,如果我需要显示从首页的数据库加载的菜单,我必须在以下位置定义main.scala.html:

@(title: String, menus: Seq[Menu])(content: Html)    

<html><head><title>@title</title></head>
<body>
    <div>
    @for(menu<-menus) {
       <a href="#">@menu.name</a>
    }
    </div>
    @content
</body></html>
Run Code Online (Sandbox Code Playgroud)

然后我必须在每个子页面中声明它:

@(menus: Seq[Menu])

@main("SubPage", menus) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

然后我必须得到菜单并传递给每个动作查看:

def index = Action {
   val menus = Menu.findAll()
   Ok(views.html.index(menus))
}

def index2 = Action {
   val menus = Menu.findAll()
   Ok(views.html.index2(menus))
}

def index3 = Action {
   val menus = Menu.findAll()
   Ok(views.html.index(menus3))
}
Run Code Online (Sandbox Code Playgroud)

现在它只有一个参数main.scala.html,如果有很多,怎么办?

所以最后,我决定Menu.findAll()直接看到所有人:

@(title: String)(content: Html)    

<html><head><title>@title</title></head>
<body>
    <div>
    @for(menu<-Menu.findAll()) {
       <a …
Run Code Online (Sandbox Code Playgroud)

playframework-2.0

125
推荐指数
5
解决办法
4万
查看次数

标签 统计

playframework-2.0 ×1