首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

Play Framework template engine模板发动机&模板隐含变量

2012-08-08 
Play Framework template engine模板引擎&模板隐含变量Play有一个高效的用来动态生成HTML, XML, JSON, 任

Play Framework template engine模板引擎&模板隐含变量
Play有一个高效的用来动态生成HTML, XML, JSON, 任何文本格式文档的模板系统。模板引擎使用Groovy(一种JVM平台上的动态语言)作为表达式语言。包含一个可以用来创建可重用函数的标签系统。
模板保存在app/views目录下。

模板语法:
模板文件是一个包含用来动态生成内容的占位符的文本文件。模板中的动态元素是使用Groovy语言编写的。Groovy的语法和Java很类似。
动态元素在模板执行阶段被处理。渲染后的结果被作为http响应的一部分而输出到客户端。

表达式:${…},声明其是一个动态的表达式。表达式的执行结果会被插入到${…} 占位符所在的位置中。
标签:#{tagName /},标签式一个模板片段,被使用是通常需要传入一些参数。如果标签只有一个参数,那么根据约定,叫它为“arg”同时, 同时参数名可以省略。
例子:
我们使用用script 标签来加载javascript文件。标签必须被关闭,要嘛直接关闭,要嘛用关闭标签关闭,如下。
#{script 'jquery.js' /}
#{script 'jquery.js'}#{/script}
如果含有多个参数的标签名,参数名不能省略,如下的list标签。

package ext; import play.templates.JavaExtensions; public class CurrencyExtensions extends JavaExtensions {   public static String ccyAmount(Number number, String currencySymbol) {     String format = "'"+currencySymbol + "'#####.##";     return new DecimalFormat(format).format(number);  } }

自定义格式化方法必须是静态的,并且返回值应该是字符串(被写回到画面上)。第一个参数就是被传递进来的对象。
然后你就可以如下使用:
<em>Price: ${123456.324234.ccyAmount()}</em>

模板引擎在play启动是会自动检测到这个自定义的扩张。你只需要重启下服务器以使得扩张方法生效。

模板中的隐含变量:
所有被加到renderArgs中的变量都直接变成模板中的变量,在模板中直接使用。
譬如,你可以如下把控制器中把一个“user”bean注入到模板中。
renderArgs.put("user", user );
当从action中渲染模板时,框架同时会把下面的对象中加到模板中
即模板中可以直接使用的变量:
session, the Session objectflash, the Flash scoperequest, the current Requestparams, HTTP params play, a reference to play.Playlang, the current languagemessages, the messages mapout, the Writer

热点排行