文档

§实现 Hello World

要了解使用 Play 的简单性,让我们将自定义的 "Hello World" 问候语添加到此教程应用程序中。

主要步骤包括

  1. 创建 Hello World 页面
  2. 添加操作方法
  3. 定义路由
  4. 自定义问候语

§1. 创建 Hello World 页面

按照以下说明将新的 Hello World 页面添加到此项目中。

使用任何文本编辑器,创建一个名为 hello.scala.html 的文件,并将其保存在此项目的 app/views 目录中。将以下内容添加到文件中

@()

@main("Hello") {
    <section id="top">
        <div class="wrapper">
            <h1>Hello World</h1>
        </div>
    </section>
}

此 Twirl 和 HTML 标记实现了以下功能

  1. @ 符号告诉模板引擎解释其后的内容。
  2. 在本例中,@main("Hello") 调用主模板 main.scala.html 并向其传递页面标题 "Hello"
  3. 内容部分包含 Hello World 问候语。主模板会将此内容插入页面的主体中。

现在,我们准备添加一个操作方法来渲染新页面。

§2. 添加操作方法

要为新页面添加操作方法,请执行以下操作

打开 app/controllers/HomeController.java(或 .scala)文件。在教程方法下,在结束括号之前,添加以下方法

Java
public Result hello() {
    return ok(views.html.hello.render());
}
Scala
def hello = Action {
  Ok(views.html.hello())
}

为了让 Play 在浏览器请求 hello 页面时调用新的操作方法,我们需要添加一个将页面映射到该方法的路由。

§3. 定义路由

要为新的 Hello 页面定义路由

打开 conf/routes 文件并添加以下行

GET     /hello      controllers.HomeController.hello

当您向 routes 文件添加路由时,Play 的路由编译器会自动生成一个路由类,该类使用您控制器的实例来调用该操作。有关更多信息,请参阅 路由文档。默认情况下,控制器实例是使用依赖注入创建的(请参阅 JavaScala 的文档)。

现在您已准备好测试新页面。如果您因某种原因停止了应用程序,请使用 sbt run 命令重新启动它。

输入 URL http://localhost:9000/hello 以查看您的工作结果。浏览器应该返回类似以下内容的响应

§4. 自定义问候语

作为本教程的最后部分,我们将修改 hello 页面以接受 HTTP 请求参数。这些步骤包括一个故意的错误,以演示 Play 如何提供有用的反馈。

要自定义 Hello World 问候语,请按照以下说明操作。

app/controllers/HomeController.java(或 .scala)文件中,使用以下代码修改 hello 操作方法以接受名为参数:

Java
public Result hello(String name) {
    return ok(views.html.hello.render());
}
Scala
def hello(name: String) = Action {
  Ok(views.html.hello())
}

conf/routes 文件中,在 hello 的末尾添加一个 (name: String) 参数

GET  /hello        controllers.HomeController.hello(name: String)

在 Twirl 模板中,必须声明所有变量及其类型。在 app/views/hello.scala.html 文件中

  1. 在文件顶部插入新行。
  2. 在该行上,添加一个 @ 指令,该指令声明名为参数及其类型:@(name: String)
  3. 要在页面上使用该变量,请将 <h2> 标题中的文本从 Hello World! 更改为 <h2>Hello @name!</h2>

最终结果将是

@(name: String)
@main("Hello") {
    <section id="top">
        <div class="wrapper">
            <h1>Hello, @name</h1>
        </div>
    </section>
}

在浏览器中,输入以下 URL 并将任何名称作为查询参数传递给 hello 方法:http://localhost:9000/hello?name=MyName。Play 会返回一个有用的编译错误,让您知道返回值中的 render 方法需要一个类型化参数

要修复编译错误,请修改 HomeController 中的 hello 操作方法,以便在渲染视图时包含 name 参数

Java
public Result hello(String name) {
   return ok(views.html.hello.render(name));
}
Scala
def hello(name: String) = Action {
  Ok(views.html.hello(name))
}

保存文件并刷新浏览器。页面应该显示类似以下的自定义问候语

§摘要

感谢您尝试我们的教程。您学习了如何使用动作方法、路由、Twirl 模板和输入参数来创建自定义的 Hello World 问候语!您体验了模板编译如何使识别和修复问题变得更容易,以及自动重新加载如何节省时间。

这只是一个简单的入门示例。现在让我们看看社区中的其他官方示例和教程。

下一步:Play 教程


在本文档中发现错误?此页面的源代码可以在 此处 找到。阅读完 文档指南 后,请随时贡献拉取请求。有疑问或建议要分享?前往 我们的社区论坛 与社区开始对话。