Play Framework 为一个 html 页面呈现多个视图

PlayFramework render multiply views for a one html page

我想使用 Play Framework 生成一个 HTML 页面。对于此页面,我想使用两个视图模板。每个 generated/rendered 分开,并粘成一个。

我要求这个特定的功能,因为我有很多视图,我想在不同的组合中重复使用。我想避免将它们全部粘贴到一个模板中,并使用 if 语句生成正确的视图。

这些视图彼此不相关,而且它们太大(每个大约 1000 行)无法全部放在一个文件中,所以我决定拆分它们。

我知道我可以将一个视图注入另一个视图。这就是我在许多情况下所做的(例如,我将 currentView.scala.html 注入 mainManuView.scala.html),但在这种特殊情况下,这并不是一个真正的选择。

您可以使用 render(...).body 获取每个视图的 HTML 内容并将它们连接在一起。

val partOne = views.html.partOne.render(...).body
val partTwo = views.html.partTwo.render(...).body
Ok(partOne + partTwo)    

我后来自己想出的其他方法是从其他视图调用带有参数的视图作为普通方法。

示例视图:

@(header: String, variable1: String, variable2: String, sharedVariable: String)
@MainManuView(header) {
    <div>
        @views.html.partOneView(variable1, sharedVariable)
    </div>
    <div>
        @views.html.partTwoView(variable2, sharedVariable)
    </div>

}