Play擁有高效的模板系統。Template引擎使用Groovy作爲表達式語言。Play的模板保存在app/views目錄下。
1.Template語法:
1.1.Expressions: ${…}
輸出變量的值。
例如:${frontPost.title} 該表達式會輸出frontPost變量對象的title屬性值。
如果你不確定frontPost是否爲Null,可以如下寫${frontPost?.title},只有在frontPost不爲null時,才顯示frontPost的title。
1.2.模板設計:#{extends /}和#{doLayout /}
用來複用模板的設計和佈局,也就是引用其他的templates。(說明:使用#{get} 和#{set} 標籤來在不同template間共享變量),例如:
#{extends 'main.html' /} #{set title:'Home' /}
第一句引入main.html,第二句設置變量title的值爲Home。(其他Template可以使用#{get}來獲得title的值)
1.3.Tags: #{tagName /}
Tag:可以使用參數訪問的template片段。例如下代碼:
<h1>Client ${client.name}</h1> <ul> #{list items:client.accounts, as:'account' } <li>${account}</li> #{/list} </ul>
list標籤,有items 和 as兩個必須的屬性。標籤在使用時和XML類似,有開始和結束包裹,#{list ...} #{/list}。
1.4.Actions: @{…} or @@{…}
使用@{…}來生成一個對應於特定route的URL。@@{…}和 @{…} 的功能一樣,但是生成絕對路徑URL。例如:
<h1>Client ${client.name}</h1> <p> <a href="@{Clients.showAccounts(client.id)}">All accounts</a> </p> <hr /> <a href="@{Clients.index()}">Back</a>
1.5.Messages: &{…}
展示國際化信息。
1.6.Comment: *{…}*
註釋,template engine不會解析。
1.7.Scripts: %{…}%
可以聲明變量,或者定義語句。使用 %{…}%來插入腳本。這個非常類似於jsp裏的java代碼片段標籤。
2.Template繼承:
一個template可以繼承另外一個template,這樣表明該template將是一個template的一部分。
index.html,定義標籤:
#{extends 'main.html' /}
#{set title:'Home' /}
同時,在main.html中,有代碼(部分):
<body> #{doLayout /} <script src="@{'/public/javascripts/jquery-1.6.4.min.js'}" type="text/javascript" charset="${_response_encoding}"></script> #{get 'moreScripts' /} </body>
這樣,Index.html將替換#{doLayout/}的部分。