Thymeleaf:检测硬编码文本

时间:2015-11-26 08:27:02

标签: java thymeleaf

是否有机会在Thymeleaf模板和日志事件中启动时自动搜索非本地化文本?

我的基础设施:Ant,Spring,Thymeleaf。

1 个答案:

答案 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}}标记或内嵌#{}

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