2015-11-26 51 views

回答

1

不幸的是,有没有干净的文件记录的方式来做到这一点(我知道)。

话虽如此,我已经做了类似的事情,我想检查模板的东西并记录一个事件,但实现是丑陋的。

我不得不警告你,这是超出可怕的,因为它不是标准的可能会在未来的版本中打破,所以我会谨慎使用,绝对不能用于任何生产代码。

这需要你模板解析器缓存为true - org.thymeleaf.templateresolver.TemplateResolver#setCacheable(true)默认为true

我能够通过扩展org.thymeleaf.cache.StandardCacheManager做到这一点(需要设置在org.thymeleaf.TemplateEngine高速缓存管理器)和压倒一切的initializeTemplateCache()一个返回的org.thymeleaf.cache.StandardCache的定制版本。我的缓存实现覆盖了作为值传递给org.thymeleaf.Templateput(..)方法。

这则必须通过getDocument()org.thymeleaf.dom.Document访问,并从那里您可以通过孩子recursivly迭代(其中有些会org.thymeleaf.dom.AbstractTextNode)。在你的情况下,你也可能想遍历元素节点上的所有属性。

你,你便要编写一些逻辑来确定是否文本是不会被本地化,制定是否不使用#{}表达或者如果表达不以th:...="#{}"标签或者是线上[[#{}]]

丑陋的我知道但它适用于我。如果任何人有一个更清洁的解决方案,我都耳朵。

+0

唯一不好看的地方就是你使用了CacheManager,它依赖于缓存是真实的。在我们的开发环境中,我们都将其设置为false。所以,你的回答真的很有帮助,但不适用于我。 – dtrunk