[
https://issues.apache.org/jira/browse/VELOCITY-682?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12666474#action_12666474
]
Byron Foster commented on VELOCITY-682:
---------------------------------------
This is confirmed: the following simpler VTL:
#macro(eval $e)#evaluate($e)#end
#eval("foo1")
#eval("foo2")
Results in:
Threw: class org.apache.velocity.exception.ParseErrorException
Msg: Macro '#eval' is not defined at /foo.vm[line 3, column 1]
org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:319)
org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:215)
org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207)
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342)
org.apache.velocity.Template.merge(Template.java:340)
org.apache.velocity.Template.merge(Template.java:248)
org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:343)
> #evaluate breaks macro processing
> ---------------------------------
>
> Key: VELOCITY-682
> URL: https://issues.apache.org/jira/browse/VELOCITY-682
> Project: Velocity
> Issue Type: Bug
> Components: Engine
> Affects Versions: 1.6.1
> Reporter: Sergiu Dumitriu
>
> When using #evaluate, all further macro processing is broken; old macros are
> not recognized anymore, and new macros cannot be defined.
> For example:
> {noformat}
> #macro(aSimpleMacro)
> This is a simple macro
> #end
> ## called 3 times to show that it works each time
> #aSimpleMacro()
> #aSimpleMacro()
> #aSimpleMacro()
> #macro(doEval $b)
> #evaluate($x)
> #end
> #set($x = 'value of x')
> #doEval('$x')
> ## after the first call, which used an #evaluate, these two won't work
> anymore:
> #doEval('$x')
> #doEval('$x')
> #macro(anotherSimpleMacro)
> This is another simple macro
> #end
> ## This newly defined macro doesn't work, either...
> #anotherSimpleMacro()
> ## And the first macro, which worked well before, suddenly stops working
> #aSimpleMacro()
> {/noformat}
> should print:
> {noformat}
> This is a simple macro
> This is a simple macro
> This is a simple macro
> value of x
> value of x
> value of x
> This is another simple macro
> This is a simple macro
> {/noformat}
> but instead prints:
> {noformat}
> This is a simple macro
> This is a simple macro
> This is a simple macro
> value of x
> #doEval('$x')
> #doEval('$x')
> #anotherSimpleMacro()
> #aSimpleMacro()
> {/noformat}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]