2015-11-26 49 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