【问题标题】:Referencing template syntax system in Play framework在 Play 框架中引用模板语法系统
【发布时间】:2014-11-03 18:58:57
【问题描述】:

我正在使用 Play 进行我的第一个项目!框架并阅读“Play for Java”Manning 书的第一章。

在第 1.5 节中,我们在应用程序/视图中构建了我们的第一个模板,它被称为 hello.scala.html

@(name:String)
<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Hello</title>
    </head>
    <body>
        <h1>Hello @name</h1>
    </body>
</html>

为了引用这个模板,我在 app/Application.java 中使用了以下行

public class Application extends Controller {

    public static Result hello(String name) {
        return ok(views.html.hello.render(name));
    }

我对 Java 还不是很熟悉,我正试图逐字逐句分解第三行的含义。

  • 返回 ok --> 返回 HTTP OK 代码,到目前为止一切顺利。

  • views --> 这是否意味着查看 app/views 文件夹?或者它是存储在其他地方的视图路径的参考?

  • .html --> 这是数据类型吗?一个文件名?文件扩展名?如果模板被称为 hello.scala.htm 会改变吗?

  • .hello --> 这是引用文件的标题吗:hello.scala.html?

  • .render --> 所有模板都使用这个方法吗?

  • (name) --> 我假设这是引用 hello.scala.html 第一行中的参数

【问题讨论】:

    标签: playframework-2.0


    【解决方案1】:

    了解 Play 模板引擎如何工作的关键是要意识到每个视图都编译成 Scala 对象。您没有写出您使用的是哪个版本的 Play。在 2.3 中,您可以在 target/scala-{version}/twirl 目录中查看生成的 Scala 源代码。

    views --> 这是否意味着查看 app/views 文件夹?或者它是一个 存储在其他地方的视图路径的参考?

    views.html 只不过是放置对象的包。如果 hello.scala.html 文件位于视图目录中,Play 会自动生成目录 views.html 并将编译为对象的模板放入其中。 html 包是根据模板的扩展名生成的。所有带有 *.html 扩展名的模板都将放在这个包下。对于其他扩展,将生成不同的包。

    请注意,如果您在 views/subdir/hello.scala.html 中创建视图,则生成的包结构将如下所示 views.html.subdir

    .html --> 这是数据类型吗?文件名?文件扩展名?如果 模板被称为 hello.scala.htm 而不是这会改变吗?

    如上所述,它用于生成包。根据documentation,只有 html、js、xml 或 txt 是有效的扩展名。

    .hello --> 这是否引用了文件的标题: 你好.scala.html?

    在这种情况下,hello 是从您的视图生成的对象的名称。

    .render --> 所有模板都使用这个方法吗?

    从视图源文件生成的每个对象都扩展了 play.twirl.api.Template1,其中放置了 render() 的声明。

    (name) --> 我假设这是在引用 hello.scala.html 的第一行

    是的,你是对的。

    此外,您还写了有关您对 Java 的熟悉程度的文章。显然,掌握模板引擎的所有细节也需要对 Scala 有一点了解。好消息是,您不必完全了解它即可正确使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      相关资源
      最近更新 更多