我正在尝试获取已在TemplateCache
中的模板列表(这是私有的,隐藏在配置后面)。
我正在尝试为模板编写一个小的管理界面,并显示已经缓存的内容,并在特定模板上调用configuration.removeTemplateFromCache(String)
而不是所有内容(clearTemplateCache
将清除过多并导致文件过多IO)。我的另一种方法是在一个Set中保留一个模板名称的并行列表,并将其用作一个键列表,但如果FreeMarker
提供这一点以保持一致性,那就太好了。
此外,还有一个原因是将TemplateCache
内容隐藏在配置后面(同时允许通过公共方法删除密钥,但不允许按键列表删除)。看起来像反模式。
答案 0 :(得分:1)
TemplateCache
是一种实现细节(我猜它是公开的,因为Java不允许它仅对FreeMarker包可见)。更好的问题是为什么你无法从CacheStorage
获得Configuration
。无论如何,就你的问题而言,FreeMarker甚至都不知道模板列表,因为CacheStorage
接口没有提供任何查询方法。但是,您可以在提供此类方法的via CacheStorage
中插入您自己的Configuration.setCacheStorage
实现,并在FreeMarker之外的某处保留对它的引用。是的,有点尴尬的是你不能从Configuration
得到它......但是从好的方面来说,你可以随心所欲地监控缓存活动。
更新: FreeMarker 2.3.20有Configuration.getCacheStorage()
,因此不再隐藏。