聊聊Play框架的模板
之前,我把字串透過ok()返回給客戶。我可以把一個完整的html頁面放入字串中返回。然而,現代的框架都提供了更好的方法——模板。模板將檢視和資料分開。伺服器可以把不同的資料傳遞給同一個模板,從而產生不同的頁面。 Play同樣也有一套模板系統。模板的大部分內容都可以用html寫,作為檢視,而在一些特別的地方,預留給資料引數。在模板中,用Scala語言來呼叫引數。
使用模板
我首先建立一個模板,純粹起檢視功能。在app/views資料夾中,新建檔案index.scala.html (如果已有,則刪除並重新建立)。
html>Play Hello World! Start using the Template.
這個模板是個純粹的html檔案,是最簡單的模板形式。
修改app/controllers/Application.java:
package controllers; import play.*; import play.mvc.*; public class Application extends Controller { public static Result index() { return ok(views.html.index.render()); } }
ok()中接收的是views.html.index.render(),實際上就是app/views/index.scala.html這一模板的render()方法。Play會根據模板,自動生成相應的類。
*** 也可以用import引入views.html.index,而不是使用完整的類路徑。
訪問頁面:
模板語言
這一部分,我把物件作為引數傳給模板,然後在模板中顯示物件中包含的資料。修改index.scala.html:
@(title: String, content: String) html>@title @(content) Start using the template.
上面的第一行,以@符號開頭,說明了該模板所接收的兩個引數,即String型別的title和content。在模板中,用@符號和引數名,來呼叫引數。引數名周圍可以用括號"()",以區分正文。
修改動作:
public static Result index() { return ok(views.html.index.render("Play", "Hello World! Parameters passed. ")); }
這裡傳遞兩個字串給模板。最終顯示的結果中,兩個字串將填充在模板中的適當位置。
上面把一個物件傳遞給模板。我們還可以在模板中呼叫物件的屬性或方法:
@object.method()
@object.field
模板控制
我還可以用Scala的語法,在模板中實現更復雜的邏輯。比如下面的模板中使用迴圈:
@(title: String, content: String, lines: List[String]) html>@title @(content) Start using the template.
-
@for(line @line
}
迴圈是@for實現的。@後面不僅可以是一個物件,還可以是一個完整的Scala語法。
修改動作,把一個字串型別的表作為引數傳遞給模板:
package controllers; import play.*; import play.mvc.*; import java.util.List; import java.util.ArrayList; public class Application extends Controller { public static Result index() { Listlines = new ArrayList (); lines.add("a"); lines.add("b"); lines.add("c"); return ok(views.html.index.render("Play", "Hello World!", lines)); } }
得到下面的頁面:
模板中還可以有if選擇結構,比如
@if(item) {True
} else {False
}
根據引數item的真假,if結構顯示不同的內容。
其它
在@* *@中加入註釋
由於@的特殊功能,為了在模板中顯示"@"字元,需要使用@@。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2331/viewspace-2809044/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 聊聊模板
- 關於Play框架的靜態檔案框架
- Play框架如何驗證使用者框架
- 聊聊elasticsearch7.8的模板和動態對映Elasticsearch
- 聊聊我對現代前端框架的認知前端框架
- Tornado框架02-模板引擎框架
- Python全棧Web(Django框架、模板)Python全棧WebDjango框架
- gf框架之模板引擎 – 基本用法框架
- 聊聊如何實現一個帶冪等模板的Kafka消費者Kafka
- Laravel框架模板之公共模板、繼承、包含實現方法分析Laravel框架繼承
- 被噴了!聊聊我開源的RPC框架那些事RPC框架
- 自研 PHP 框架 1.1_模板引擎PHP框架
- 3天學寫mvvm框架[二]:模板解析MVVM框架
- 後臺框架模板,前端使用 layui 框架,實現了完善的 RBAC 許可權控制框架前端UI
- 三大最棒的開源Web開發模板或框架Web框架
- Vue 框架-07-迴圈指令 v-for,和模板的使用Vue框架
- sbt建立play framework(play!)scala web專案FrameworkWeb
- 遊戲是如何有序執行的? 聊聊遊戲規則的基本框架遊戲框架
- Yarn 的 Plug'n'Play 特性Yarn
- 網站模板的logo框架修改?後臺修改網站內容?網站Go框架
- Play Arch LinuxLinux
- 前端框架VUE——資料繫結及模板語法前端框架Vue
- gojs 流程圖框架-節點裝飾器模板(二)GoJS流程圖框架
- 聊聊Canvas渲染相關 (非API層,偏框架設計方面)CanvasAPI框架
- play高階用法
- JS Array play aroundJS
- Flask框架從入門到精通之模板表單(二十)Flask框架
- Flask框架從入門到精通之模板初識(五)Flask框架
- 137. Python語言 的 Flask框架專案前導 之 模板 第二章 :Jinja2 模板過濾器PythonFlask框架過濾器
- 小米Play有人臉識別功能嗎?小米Play人臉解鎖的設定方法教程
- 榮耀Play值得買嗎?榮耀Play評測:表現出色的遊戲手機遊戲
- DjangoRestFramework框架三種分頁功能的實現 - 在DjangoStarter專案模板中封裝DjangoRESTFramework框架封裝
- JAVA快速開發框架 一鍵生成表單模板程式碼Java框架
- 聊聊SpringBootTest的webEnvironmentSpring BootWeb
- 聊聊spring的UnexpectedRollbackExceptionSpringException
- 聊聊arthas的ArthasBootstrapboot
- 聊聊arthas的HttpTermServerHTTPServer
- 聊聊PowerJob的AppInfoControllerAPPController