Re: macro fails to access param properties with render.eval

kris <[email protected]>
Newsgroups gmane.comp.jakarta.velocity.user
Message-ID <CAECF=ud-yNryf8=7x=S1hcQgPMPx7mjh5cgzErWhiyrEVXTOiQ@mail.gmail.com>
I got this working!!!

#set($macroName = "aMacro")
#set( $call = '#'+$macroName+'($p1)' )
#evaluate($call)


On Sat, Apr 13, 2013 at 7:34 AM, Krishna Sarma <[email protected]>wrote:

> Hello Jonathan,
> thanks for your reply.
>
> It works great when I call #aMacro($p1). But in my case, the macro to
> call would be determined dynamically. I would construct the macro name
> something like :
>     #$objectx.type+$objecty.operation($objectz)
>
> In my example, if I remove the quotes around $p1, system throws an error
> like "unrecognized string..." Also, I believe with those quotes, VE is not
> considering $p1 as plain string literal. When I uncomment the first line in
> aMacro, it is printing the object reference, not the string "$p1".
>
> Is there any workaround to invoke the macro dynamically with parameters?
>
> Thanks
>
>
> On Fri, Apr 12, 2013 at 7:11 PM, Jonathan Ihm [via Velocity] <
> [email protected]> wrote:
>
>> You are calling a method on a string.  When you put $p1 between the
>> single
>> quotes, you are not using whatever object $p1 is, but the literal string
>> '$p1' and getId() is not a method for a string.
>>
>> Also, it works fine for me when I run #aMacro($p1) with a dummy object,
>> but
>> not setting macroName and call variables.  Are those necessary?  Try
>> this:
>>
>> #aMacro($p1)
>>
>>
>>
>>
>> On Fri, Apr 12, 2013 at 12:46 AM, kris <[hidden email]<http://user/SendEmail.jtp?type=node&node=16195&i=0>>
>> wrote:
>>
>> > My VTL template looks like:
>> > #macro(aMacro $par1)
>> >         ##$par1
>> >         $par1.getId()
>> > #end
>> >
>> > #set($macroName = "aMacro")
>> > #set( $call = "#$macroName('$p1')" )
>> > #evaluate($call)
>> >
>> > I have filled the context with an object that has Id property. When I
>> run
>> > this template I would like to see the Id of the object. Instead it just
>> > outputs "$par1.getId()"
>> >
>> >
>> >
>> > --
>> > View this message in context:
>> >
>> http://velocity.10973.n7.nabble.com/macro-fails-to-access-param-properties-with-render-eval-tp16194.html
>> > Sent from the Velocity - User mailing list archive at Nabble.com.
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: [hidden email]<http://user/SendEmail.jtp?type=node&node=16195&i=1>
>> > For additional commands, e-mail: [hidden email]<http://user/SendEmail.jtp?type=node&node=16195&i=2>
>> >
>> >
>>
>>
>> ------------------------------
>>  If you reply to this email, your message will be added to the
>> discussion below:
>>
>> http://velocity.10973.n7.nabble.com/macro-fails-to-access-param-properties-with-render-eval-tp16194p16195.html
>>  To unsubscribe from macro fails to access param properties with
>> render.eval, click here<http://velocity.10973.n7.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=16194&code=a3Jpc2huYXNhcm1hQGdtYWlsLmNvbXwxNjE5NHwtMTMxNTcwNzg3NQ==>
>> .
>> NAML<http://velocity.10973.n7.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>>
>
>
>
> --
> Thanks
> Krishna Sarma
>



-- 
Thanks
Krishna Sarma




--
View this message in context: http://velocity.10973.n7.nabble.com/macro-fails-to-access-param-properties-with-render-eval-tp16194p16200.html
Sent from the Velocity - User mailing list archive at Nabble.com.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.