天天看點

來玩Play架構03 模闆

作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝!

在上一章節中,我把字元串通過ok()傳回給客戶。我可以把一個完整的html頁面放入字元串中傳回。然而,現代的架構都提供了更好的方法——模闆。模闆将視圖和資料分開。伺服器可以把不同的資料傳遞給同一個模闆,進而産生不同的頁面。 Play同樣也有一套模闆系統。模闆的大部分内容都可以用html寫,作為視圖,而在一些特别的地方,預留給資料參數。在模闆中,用Scala語言來調用參數。

我首先建立一個模闆,純粹起視圖功能。在app/views檔案夾中,建立檔案index.scala.html (如果已有,則删除并重新建立)。

這個模闆是個純粹的html檔案,是最簡單的模闆形式。

修改app/controllers/Application.java:

ok()中接收的是views.html.index.render(),實際上就是app/views/index.scala.html這一模闆的render()方法。Play會根據模闆,自動生成相應的類。

*** 也可以用import引入views.html.index,而不是使用完整的類路徑。

通路頁面:

來玩Play架構03 模闆

這一部分,我把對象作為參數傳給模闆,然後在模闆中顯示對象中包含的資料。修改index.scala.html:

上面的第一行,以@符号開頭,說明了該模闆所接收的兩個參數,即String類型的title和content。在模闆中,用@符号和參數名,來調用參數。參數名周圍可以用括号"()",以區分正文。

修改動作:

這裡傳遞兩個字元串給模闆。最終顯示的結果中,兩個字元串将填充在模闆中的适當位置。

來玩Play架構03 模闆

上面把一個對象傳遞給模闆。我們還可以在模闆中調用對象的屬性或方法:

@object.method()

@object.field

我還可以用Scala的文法,在模闆中實作更複雜的邏輯。比如下面的模闆中使用循環:

循環是@for實作的。@後面不僅可以是一個對象,還可以是一個完整的Scala文法。

修改動作,把一個字元串類型的表作為參數傳遞給模闆:

得到下面的頁面:

來玩Play架構03 模闆

模闆中還可以有if選擇結構,比如

根據參數item的真假,if結構顯示不同的内容。

在@* *@中加入注釋

由于@的特殊功能,為了在模闆中顯示"@"字元,需要使用@@。

模闆

render()

@