首页 > 代码库 > Play Template引擎

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="http://www.mamicode.com/@{Clients.showAccounts(client.id)}">All accounts</a>
</p>
<hr />
<a href="http://www.mamicode.com/@{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="http://www.mamicode.com/@{‘/public/javascripts/jquery-1.6.4.min.js‘}" type="text/javascript" charset="${_response_encoding}"></script>
        #{get ‘moreScripts‘ /}
    </body>

这样,Index.html将替换#{doLayout/}的部分。


本文出自 “雪花” 博客,请务必保留此出处http://6216083.blog.51cto.com/6206083/1844436

Play Template引擎