如果我想要跨多个页面(如菜单)具有通用的UI,建议如何执行此操作?Play框架是否支持“片段”?
它将包含模板代码和后端控制器(类似于LiftWeb框架中的“片段”)。
我知道有一个Play的菜单模块,但我更感兴趣的是如何实现这一般。
如果我想要跨多个页面(如菜单)具有通用的UI,建议如何执行此操作?Play框架是否支持“片段”?
它将包含模板代码和后端控制器(类似于LiftWeb框架中的“片段”)。
我知道有一个Play的菜单模块,但我更感兴趣的是如何实现这一般。
有两种方法可将普通视图代码添加到Play框架中。可以使用#{include}
标签或#{extends}
标签。
顾名思义,extends标签从父视图扩展。当您创建新应用程序时,默认使用扩展标签在由Play设置的框架代码中。它扩展了main.html。你在这里添加你的代码。
包含标签,允许您在指定点向模板中注入常见的视图代码。这同样适用于php include/require,或者jsp包含工作。
当您的模板代码也需要模型中的数据或逻辑(通过控制器)时,问题就出现了。如果是这种情况,那么您需要在您的控制器中使用@Before或@With符号来确保每次都执行通用的控制器代码。您可以将任何数据添加到renderArgs列表中,以便在视图内使用它。
一个使用renderArgs的简单例子是。
@Before
private static void commonData() {
// do your logic here
renderArgs.put("menu", menu);
renderArgs.put("selected", selectedMenuItem);
}
您放入renderArgs(菜单,在本例中选择)将可只是在相同的方式,如果你通过他们进入渲染方法的值。
谢谢 - 你能指点我使用renderArgs的任何示例代码吗? – sanity 2011-01-26 00:10:09