是否有机会在Thymeleaf模板和日志事件中启动时自动搜索非本地化文本?
我的基础设施:Ant,Spring,Thymeleaf。
答案 0 :(得分:1)
不幸的是,没有清晰的记录方式(我知道)。
话虽如此,我已经做了类似的事情,我想检查模板的某些内容并记录事件,但是实现很难看。
我必须警告你,这太可怕了,因为它不标准可能会在未来版本中破坏,所以我会谨慎使用,绝对不能在任何生产代码中使用。
这要求模板解析器可以缓存为true
- org.thymeleaf.templateresolver.TemplateResolver#setCacheable(true)
,默认值为true
。
我能够通过扩展org.thymeleaf.cache.StandardCacheManager
(您需要在org.thymeleaf.TemplateEngine
上设置缓存管理器)并覆盖返回自定义版本initializeTemplateCache()
的{{1}}来实现此目的。 。我的缓存实现覆盖了传递org.thymeleaf.cache.StandardCache
作为值的put(..)
方法。
然后通过org.thymeleaf.Template
可以访问org.thymeleaf.dom.Document
,然后您可以递归地遍历子项(其中一些将是getDocument()
)。在您的情况下,您可能还想迭代元素节点上的所有属性。
对于您来说,您必须编写一些逻辑来确定文本是否不会被本地化,确定org.thymeleaf.dom.AbstractTextNode
表达式是否未被使用,或者该表达式是否不在{{ 1}}标记或内嵌#{}
丑陋我知道,但它对我有用。如果有人有一个更清洁的解决方案我全都耳朵。