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/}的部分。
本文出自 “雪花” 博客,请务必保留此出处http://6216083.blog.51cto.com/6206083/1844436
原文地址:http://6216083.blog.51cto.com/6206083/1844436