java - doLayout 和 include in a template in 'Java Play!' 有什么区别?

标签 java templates playframework

当使用doLayout扩展时,您只能有一个子模板,但您可以包含多个。

有什么区别,最佳做法是什么?

最佳答案

它们有点互为反面。

doLayout 用作 extends 标签的一部分。 extends 标签指定您希望扩展哪个模板,doLayout 标签指定您的代码注入(inject)扩展模板的位置。

include 标签只是指定另一个模板应该在指定的点注入(inject)。

因此,doLayout 的工作方式与 include 类似,只是 doLayout 标签不指定注入(inject)哪个模板。这是由 extends 标签完成的,这意味着模板(通常包含页眉、页脚和常见的 css 和 javascript)可以被扩展,而不需要知道任何关于扩展它的模板。

Include,只是一个愚蠢的代码注入(inject)。

如果您想使用 include 实现 doLayout 功能(这就是您在 PHP 或类似软件中的实现方式),您可以这样做

#{include 'header.html'}
your template code
#{include 'footer.html'}

这必须在模板的每个页面上复制。而使用 extendsdoLayout 可以让你简单地做

#{extends 'template.html'}

将代码注入(inject) template.html 的位置由 doLayout 标签管理。

extends 方法只是一种更简洁的方法。此外,如果您决定更改页面布局,您只需更新一个文件,并让您更灵活地选择内容在扩展模板中的位置。

关于java - doLayout 和 include in a template in 'Java Play!' 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4474544/

相关文章:

图像的 Javascript md5 哈希与 Java 进行比较

c++ - 编写我的第一个模板类- “Undefined symbols”错误

C++ 未定义对链接函数的引用

playframework - 如何使用 Typesafe Activator UI 在开发模式下运行游戏项目

java - 在 cygwin 终端中运行的 Jetty 服务器不会通过 CTRL + c 终止

java - Spring Data 动态查询

java - 如何将 JFROG 工件添加到 sbt.build 文件中?

json - org.codehaus.jackson.map.JsonMappingException : Can not instantiate value of type [simple type, 类 models.Job] 来自 JSON 字符串

java - 将Java中的二维数组转换为图像

C++专门化模板类函数而无需重复代码