java - Freemarker - template preprocessing -
i wondering, whether there way preprocess freemarker template rules - add syntactic sugar, not directive, nor method.
fo instance have variables, print this:
${item.getlocale(currentlocale).name} ${item.getlocale(currentlocale).text} ${item.parent.getlocale(currentlocale).name} ${item.parent.getlocale(currentlocale).text}
obviously, getlocale
construct makes whole expression pretty ugly. achieve able write:
${item.l.name} ${item.l.text} ${item.parent.l.name} ${item.parent.l.text}
so .l.
during compilation rewritten .getlocale(currentlocale)
.
is there nice way that? thanks!
this pretty why object wrapping exists in freemarker; can present data templates in custom way. suppose item
belongs specific java class. extend defaultobjectwrapper
or beanswrapper
wrap items specially, , use configuration.setobjectwrapper(new yourobjectwrapper())
once initialize freemarker. (see source code of defaultobjectwrapper
example of customization; extends beanswrapper
wrap xml nodes, jython object, etc., specially.) when have ${item.name}
in template, it's call yourhashmodel.get("name")
on java side (where yourhashmodel
extends freemarker.template.templatehashmodel
), , in get
method can have return new simplescalar(item.getlocale(currentlocale).get("name"))
or like.
Comments
Post a Comment