You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@velocity.apache.org by La...@MSCsoftware.com on 2004/09/20 23:18:37 UTC
render.eval()
Why doesn't the following work while I'm running DVSL?:
#set($aString = "")
#set($render =
$aString.class.forName("org.apache.velocity.tools.generic.RenderTool").newInstance())
#foreach($param in $params)
#set($name = $param.attrib("name"))
#set($value = $o.get($name))
##set($s1 = "#set($$name = '$value')")
% $render.eval($context, '#set($$name = "$value")' )
% $render.eval($context, "$name = $$name")
#end
It prints
% $render.eval($context, '#set($$name = "$value")' )
% $render.eval($context, "$name = $$name")
I put the following JAR files in my classpath:
velocity-dep-1.3.1.jar
velocity-tools-*.jar
With thanks,
Larry Siden, IBS consultant, Viper team
x72612
Re: render.eval()
Posted by Shinobu Kawai <sh...@gmail.com>.
Hi Larry,
> % FYI: \$context is $context
> % FYI: $context is org.apache.tools.dvsl.Transformer@1892b4e
Ok, here's your problem. Transformer isn't a Context, which means that
RenderTool won't handle it.
I don't know how DVSL works, but you'll have to give RenderTool the
Context. (DVSLNodeContext currentContext, maybe?)
Best regards,
-- Shinobu Kawai
--
Shinobu Kawai(shinobu.kawai@gmail.com)
---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org
Re: render.eval()
Posted by La...@MSCsoftware.com.
Let's try this a little differently, so the intent is more obvious. This
code is taken from a DVSL #match fragment that outputs Latex. The lines
beginning with '%' are Latex comments.
#set($aString = "")
#set($render =
$aString.class.forName("org.apache.velocity.tools.generic.RenderTool").newInstance())
#set($name = "foo")
#set($value = "bar")
% $render.eval($context, '#set($$name = "$value")' )
% I want to see 'bar' here: $foo
% FYI: \$context is $context
When run on suitable input, the output of this fragment is:
% $render.eval($context,
'#set($$name = "$value")' )
% I want to see 'bar' here: $foo
% FYI: $context is
org.apache.tools.dvsl.Transformer@1892b4e
Larry Siden, IBS consultant, Viper team
x72612
Shinobu Kawai <sh...@gmail.com>
09/20/2004 06:23 PM
Please respond to
"Velocity Users List" <ve...@jakarta.apache.org>
To
Velocity Users List <ve...@jakarta.apache.org>
cc
Subject
Re: render.eval()
Hi Larry,
> Why doesn't the following work while I'm running DVSL?:
>
> #set($aString = "")
> #set($render =
>
$aString.class.forName("org.apache.velocity.tools.generic.RenderTool").newInstance())
>
> #foreach($param in $params)
What's in $params?
> #set($name = $param.attrib("name"))
> #set($value = $o.get($name))
What's in $o?
> ##set($s1 = "#set($$name = '$value')")
Are you deliberately commenting here?
> % $render.eval($context, '#set($$name = "$value")' )
> % $render.eval($context, "$name = $$name")
> #end
>
> It prints
>
> % $render.eval($context, '#set($$name = "$value")' )
> % $render.eval($context, "$name = $$name")
And last but most important, how do you want it to print?
Best regards,
-- Shinobu Kawai
--
Shinobu Kawai(shinobu.kawai@gmail.com)
---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org
Re: render.eval()
Posted by Shinobu Kawai <sh...@gmail.com>.
Hi Larry,
> Why doesn't the following work while I'm running DVSL?:
>
> #set($aString = "")
> #set($render =
> $aString.class.forName("org.apache.velocity.tools.generic.RenderTool").newInstance())
>
> #foreach($param in $params)
What's in $params?
> #set($name = $param.attrib("name"))
> #set($value = $o.get($name))
What's in $o?
> ##set($s1 = "#set($$name = '$value')")
Are you deliberately commenting here?
> % $render.eval($context, '#set($$name = "$value")' )
> % $render.eval($context, "$name = $$name")
> #end
>
> It prints
>
> % $render.eval($context, '#set($$name = "$value")' )
> % $render.eval($context, "$name = $$name")
And last but most important, how do you want it to print?
Best regards,
-- Shinobu Kawai
--
Shinobu Kawai(shinobu.kawai@gmail.com)
---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org
Re: render.eval()
Posted by Claude Brisson <cl...@renegat.net>.
> Why doesn't the following work while I'm running DVSL?:
>
> #set($aString = "")
> #set($render =
> $aString.class.forName("org.apache.velocity.tools.generic.RenderTool").newInstance())
>
> #foreach($param in $params)
> #set($name = $param.attrib("name"))
> #set($value = $o.get($name))
>
> ##set($s1 = "#set($$name = '$value')")
> % $render.eval($context, '#set($$name = "$value")' )
> % $render.eval($context, "$name = $$name")
> #end
>
> It prints
>
> % $render.eval($context, '#set($$name = "$value")' )
> % $render.eval($context, "$name = $$name")
>
It's probably because $context is not in the context.
I don't think of any easy way of using the RenderTool with DVSL.
Maybe you can use two phasis, fist merge a template in a StringWriter
and then transform the result using DVSL.
Claude
---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org