Freemarker Персонализиране на TemplateCache хранилище иска да прочете информацията от TemplateKey

Имам собствено персонализирано хранилище на шаблони на freemarker, конфигурирано върху freemarker, работи добре.

Наскоро искам да направя някои промени в управлението на кеша, трябва да прочета свойствата от ключа на кеша, който е typeof "TemplateKey". За съжаление "TemplateKey" е "частен краен статичен клас". Нямам достъп до този клас и не мога да прехвърля обекта Key обратно в обект TemplateKey.

Виждам, че най-простият начин е да направите промяна на изходния код в TemplateCache.java, за да актуализирате TemplateKey, за да бъде изложен като публичен клас.

Въпрос към дизайнера на Freemarker: Има ли някаква специална причина този TemplateKey да не бъде изложен? Възможно ли е да го изложим в следваща компилация?

Благодаря.

Роки


person Rocky Fan    schedule 07.04.2014    source източник


Отговори (2)


На пръв поглед бих запазил класа ключ личен, защото излагането му би въвело ограничение за обратна съвместимост, което може да попречи на по-нататъшното развитие. Но какъв точно е вашият случай на употреба, който изисква информация от ключа?

person ddekany    schedule 10.04.2014

Деактивирахме localelookup, в този случай един FTL файл работи за всички локали. Но ключът включва локал, така че sampe шаблонът е кеширан за всеки локал, той се дублира в паметта. Едно решение е: премахнете локала в ключа, когато го управлявате в кеша, така че трябва да прочета свойствата на ключа. Но все още трябва да се комбинира с други промени, като например да направи шаблона годен за клониране. Моля, вижте този POS за подробности: Кешът на шаблоните на Freemarker е в едно и също съдържание, когато локалът е различен, проблем ли е загубата на памет?

Благодаря.

person Rocky Fan    schedule 17.04.2014