4

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

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

此外,隐藏配置背后的内容是有原因的TemplateCache(同时允许通过公共方法通过密钥删除,但不允许密钥列表)。似乎是一种反模式。

4

1 回答 1

1

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

更新: FreeMarker 2.3.20 有Configuration.getCacheStorage(),所以它不再隐藏了。

于 2012-12-15T20:08:00.213 回答