小编典典

Play Framework是否支持“代码段”?

java

如果我想跨多个页面(如菜单)使用一个通用的UI,推荐的这样做方法是什么?

它包含模板代码和后端控制器(类似于LiftWeb框架中的“片段”)。

我知道有一个Play菜单模块,但我对总体上如何实现更感兴趣。


阅读 225

收藏
2020-10-12

共1个答案

小编典典

有两种方法可以将通用视图代码包含在Play框架中。

您可以使用#{include}标签或#{extends}标签。

顾名思义,extends标签是从父视图扩展的。当您创建新的应用程序时,默认情况下,扩展标记用于Play设置的框架代码中。它扩展了main.html。您在此处添加代码。

includes标记允许您在指定点将通用的视图代码注入模板中。这项工作与php include / require或jsp
includes的工作原理几乎相同。

当您的模板代码还需要模型中的数据或逻辑(通过控制器)时,就会出现问题。如果是这种情况,那么您将需要在控制器中使用@Before或@With表示法,以确保每次都执行通用的控制器代码。您可以将任何数据添加到renderArgs列表,以便可以在视图中使用。

一个使用renderArgs的简单示例将是。

@Before
private static void commonData() {
    // do your logic here
    renderArgs.put("menu", menu);
    renderArgs.put("selected", selectedMenuItem);
}

您放入renderArgs中的值(在示例中为菜单和选定值)将可用,就像您将它们传递给render方法一样。

2020-10-12