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片段。例如下代码:

Client ${client.name}

        #{list items:client.accounts, as:'account' }         
  • ${account}
  •     #{/list}

list标签,有items 和 as两个必须的属性。标签在使用时和XML类似,有开始和结束包裹,#{list ...} #{/list}。

1.4.Actions: @{…} or @@{…}

使用@{…}来生成一个对应于特定route的URL。@@{…}和 @{…} 的功能一样,但是生成绝对路径URL。例如:

Client ${client.name}

   All accounts

Back

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中,有代码(部分):

    
        #{doLayout /}
        
        
        #{get 'moreScripts' /}
    

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