文件

§實作 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())
}

當瀏覽器要求 hello 頁面時,要讓 Play 呼叫新的動作方法,我們需要新增一個路由,將頁面對應到方法。

§3. 定義路由

為新的 Hello 頁面定義路由

開啟 conf/routes 檔案,並新增下列行

GET     /hello      controllers.HomeController.hello

當您將路由新增到 routes 檔案時,Play 的路由編譯器會自動產生一個路由器類別,使用控制器實例呼叫該動作。如需更多資訊,請參閱 路由文件。預設情況下,控制器實例是使用相依性注入建立的(請參閱 JavaScala 文件)。

現在您可以測試新頁面了。如果您因為某些原因而停止應用程式,請使用 sbt run 指令重新啟動它。

輸入網址 https://127.0.0.1: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 方法:https://127.0.0.1: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 問候語!您已體驗到範本編譯如何讓您更容易找出並修正問題,以及自動重新載入如何節省時間。

這只是一個讓您入門的簡單範例。現在讓我們看看社群的其他官方範例和教學課程。

下一步:播放教學課程


在此文件發現錯誤?此頁面的原始程式碼可以在 這裡 找到。在閱讀 文件指南 後,請隨時提交拉取請求。有問題或建議要分享嗎?前往 我們的社群論壇 與社群展開對話。