模板的 Play Framework 自定义 java 扩展
Posted
技术标签:
【中文标题】模板的 Play Framework 自定义 java 扩展【英文标题】:Play Framework custom java extensions for template 【发布时间】:2013-08-06 13:50:46 【问题描述】:我正在使用 Play Framework 1.2.5,并尝试使用来自 Joda Time 的 DateTime 而不是通常的 java.util.Date。我正在尝试实现一种格式方法以在我的视图中使用。
Play 文档说我可以创建自己的custom java extensions 用于模板,但它似乎不适合我。我按照文档中的示例无济于事。
我的自定义扩展:
package ext;
import org.joda.time.DateTime;
import play.templates.JavaExtensions;
public class DateTimeExtensions extends JavaExtensions
public static String format(DateTime datetime, String format)
return datetime==null ? "" : datetime.toString(format);
我的模板代码:
$subProject?.startDate?.format('yyyy-MM-dd')
我收到的错误:
引发的异常是 MissingMethodException:没有方法签名:org.joda.time.DateTime.format() 适用于参数类型:(java.lang.String) 值:[yyyy-MM-dd]
Play 似乎没有像文档中所说的那样检测到我的自定义扩展。有人对如何进行这项工作有任何建议吗?
【问题讨论】:
你的扩展类在我看来不错。您是否重新启动了应用程序?也许play clean
有帮助?当您不使用 ?.
运算符检查 null
值时,是否也会发生这种情况?
@Carsten play clean
为我工作,谢谢。将此作为答案发布,我会接受!
这很有帮助,谢谢。
【参考方案1】:
您的扩展类对我来说看起来不错。 documentation 声明您必须重新启动应用程序才能使扩展程序生效。如果这不起作用,请尝试运行play clean
。这样做会删除临时文件,包括缓存的字节码,这有望解决您的问题。
【讨论】:
以上是关于模板的 Play Framework 自定义 java 扩展的主要内容,如果未能解决你的问题,请参考以下文章
使用 Play Framework JSON 库的自定义 Joda 时间序列化器?
使用 Play Framework 1.2.5 自定义验证 Map<Locale, String>
如何在 Play Framework v2 中指定自定义数据库连接参数以进行测试?
在 Play 1 框架中使用带有 groovy 模板的聚合物