Play Template引擎

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/}的部分。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章