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