PlayFramework 1 自定义标签 -- FastTags

最早是用 HTML 来自定义标签,现在觉得 HTML 写有关逻辑的代码就有点不伦不类了,HTML 里着重是显示代码。前有一篇 PlayFramework 1 模板应用 -- Java 对象扩展 学习了对 Java 对象扩展的方式,如果不是基于已有对象类型进行方法扩展来进行调用,就可以自定义 FastTags 的方式。

Java 对象扩展的使用是 ${obj.abc()}, FastTags 标签是 #{abc}...${/abc}。

FastTags 标签类继承自 play.templates.FastTags,标签对应方法的原型是

public static void _tagName(Map<?, ?> args, Closure body, PrintWriter out,     ExecutableTemplate template, int fromLine)

这些都是得益约定优于配置,下面来几个例子,分别说明默认参数,命名参数,及多参数,标签体的处理。 阅读全文 >>

PlayFramework 1 模板应用 -- Java 对象扩展

涉及到页面显示的问题,用自定义标签总能够能事不少,即使是最原始的自定义 JSP 标签也有人乐此不疲,进化到  Play 中的自定义标签数得上很轻量级的实现,简单的只需要一小页文档 The template engine 就足矣。

概括起来 Play1 支持三种方式自定义标签: HTML 文件方式, 自定义 FastTags, Java 对象扩展方法. 前二者为面向过程的方式,第三种方式为面向对象的方式,是在往某种数据类型追加一个方法。

确切的说针对 Java 对象的方法的扩展并不能称之为自定义标签。

一个这样的场景,股票价格变化值要显示在页面上,根据正,负,零,再加上不同的区域四种条件分别显示为不同的颜色,比如美国分别为绿色,红色和黑色(注: 美国股市显示的颜色正好与中国相反)。假设 priceChange 是 Integer 类型,我们就可以定义对 Integer 对象的扩展,所在类必须继承自 JavaExtensions 类: 阅读全文 >>