我在想,是否有辦法用某些規則預處理freemarker模板 - 我想添加一些語法糖,這不是一個指令,也不是方法。Freemarker - 模板預處理
佛比如我有變數,這是我印像這樣:
${item.getLocale(currentLocale).name}
${item.getLocale(currentLocale).text}
${item.parent.getLocale(currentLocale).name}
${item.parent.getLocale(currentLocale).text}
顯然,getLocale
結構使得整個表情相當難看。我想實現的是能夠寫出:
${item.l.name}
${item.l.text}
${item.parent.l.name}
${item.parent.l.text}
,使所有的.l.
將彙編改寫爲.getLocale(currentLocale)
期間。
有沒有一些很好的方法來做到這一點?謝謝!
我不確定這是否是一種解決方案,因爲在實際情況下,該項目可能包含不同種類的集合,我也希望使用這個'.l.'。我將不得不遍歷所有可能尚未初始化的內部對象。考慮'item.parent.parent.parent.parent.l.name'。我認爲模板預處理可能是更簡單的解決方案。 – 2012-03-10 21:28:42
但你的例子中的最後一個'parent'仍然有'getLocale'方法,對吧?我想這是來自一些可以專門包裝的'Interface'或'Class'。在這之前有多少''父''s不是特別的,因爲(通常)你將對所有東西都使用相同的對象包裝器。它並不需要你通過'HashMap'-s,'List'-s,數組或其他任何東西,根對象的包裝器將仍然在觀察。 – ddekany 2012-03-11 21:29:05