I need to replace references (properties and methods) in the Velocity templates to some other values during template rendering. For example, from the template below:
___
I have $some text $daisy
#foreach ($someElement in $someCollection)
#$someElement.doSomething()
#end
___
我需要获得这样的案文:
___
I have lalala1 text lalala1
lalala2
lalala2
lalala2
___
Besides, the reason is I don t know the names of references and the amount of them beforehand.
在技术上,我确实可以开放模板,进行人工研究,但我希望逃脱。
First of all, I tried to get references names from the template, working with implementation of ReferenceInsertionEventHandler, but the problem was in directives.
For example, with foreach I had exception "Could not determine type of iterator in #foreach loop" I looked through the velocity source code, I can change it as I need, but it will kill future project maintainability.
So the question is: is there any way to get all references names (properties and methods) from template and to change the values of them during rendering?