不同的项目往往需要特定的格式化需求,在这种情况下可以提供自己的扩展。Play对自定义扩展做了很好的封装,只需要创建继承于play.templates.JavaExtensions的Java类即可。下面将以自定义货币格式扩展为例进行讲解:
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);
}
}
在项目中创建ext包,用于存放该项目中的自定义扩展。在该目录下定义CurrencyExtensions类,并继承于JavaExtensions。读者在具体操作时需要注意,每个自定义的扩展方法均需要声明为static类型,并且返回类型为java.lang.String。定义的ccyAmount扩展方法中的第一个参数number是需要被格式化的对象,第二个参数currencySymbol是货币的符号,该扩展的具体使用方法如下:
<em>Price: ${123456.324234.ccyAmount("€")}</em>
Play会在启动时自动检测这些模板扩展类,所以定义新扩展后只需重启应用就可以生效。