FreeMarker获取TemplateCache中缓存模板的列表

时间:2012-12-14 23:10:19

标签: java freemarker

我正在尝试获取已在TemplateCache中的模板列表(这是私有的,隐藏在配置后面)。

我正在尝试为模板编写一个小的管理界面,并显示已经缓存的内容,并在特定模板上调用configuration.removeTemplateFromCache(String)而不是所有内容(clearTemplateCache将清除过多并导致文件过多IO)。我的另一种方法是在一个Set中保留一个模板名称的并行列表,并将其用作一个键列表,但如果FreeMarker提供这一点以保持一致性,那就太好了。

此外,还有一个原因是将TemplateCache内容隐藏在配置后面(同时允许通过公共方法删除密钥,但不允许按键列表删除)。看起来像反模式。

1 个答案:

答案 0 :(得分:1)

TemplateCache是一种实现细节(我猜它是公开的,因为Java不允许它仅对FreeMarker包可见)。更好的问题是为什么你无法从CacheStorage获得Configuration。无论如何,就你的问题而言,FreeMarker甚至都不知道模板列表,因为CacheStorage接口没有提供任何查询方法。但是,您可以在提供此类方法的via CacheStorage中插入您自己的Configuration.setCacheStorage实现,并在FreeMarker之外的某处保留对它的引用。是的,有点尴尬的是你不能从Configuration得到它......但是从好的方面来说,你可以随心所欲地监控缓存活动。

更新: FreeMarker 2.3.20有Configuration.getCacheStorage(),因此不再隐藏。