You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Christopher Oliver <re...@verizon.net> on 2003/03/03 01:11:44 UTC

Flow/Velocity

I've just committed changes to support calling Velocity 
(http://jakarta.apache.org/velocity) from the Cocoon flow layer.

In order to not break any existing users of the VelocityGenerator, I've 
created a new generator:

   org.apache.cocoon.generation.FlowVelocityGenerator

This generator differs from the existing VelocityGenerator in the way it 
populates the context passed to the Velocity template. It provides two 
properties:

1) this - the bean object passed to sendPage*() in your script
2) continuation - the current continuation (an instance of 
org.apache.cocoon.components.flow.WebContinuation)

In addition, the immediate properties of the bean object are also 
available in the context. So if your bean has a property "foo", you can 
access it in your template as $foo or as $this.foo.

This means you can now write a flow script like this:


   function test() {
       sendPage("templates/flow-hello-page.vm",
                {
                    name: "Cocoon",
                    project: "Velocity",
                    when: new java.util.Date()
                });
   }


that calls a Velocity template like this:

   <?xml version="1.0"?>
   <page>
    <title>Hello</title>
    <content>
     <para>This is my first Cocoon2 page!</para>
     <para>Hi!  This page is generated using $this.name from the 
$this.project project.</para>
     <para>Hi!  I can also access name, project, and when like this: 
This page is generated using $name from the $project project at 
$when.toString() .</para>
    </content>
   </page>


When the build for samples is fixed, I'll add a sample of using Velocity 
with flow scripts, but you should be able to try it yourself, so please 
do and let me know of any problems.

Regards,

Chris


Re: Flow/Velocity

Posted by Stefano Mazzocchi <st...@apache.org>.
Christopher Oliver wrote:
> I've just committed changes to support calling Velocity 
> (http://jakarta.apache.org/velocity) from the Cocoon flow layer.
> 
> In order to not break any existing users of the VelocityGenerator, I've 
> created a new generator:
> 
>   org.apache.cocoon.generation.FlowVelocityGenerator
> 
> This generator differs from the existing VelocityGenerator in the way it 
> populates the context passed to the Velocity template. It provides two 
> properties:
> 
> 1) this - the bean object passed to sendPage*() in your script
> 2) continuation - the current continuation (an instance of 
> org.apache.cocoon.components.flow.WebContinuation)
> 
> In addition, the immediate properties of the bean object are also 
> available in the context. So if your bean has a property "foo", you can 
> access it in your template as $foo or as $this.foo.
> 
> This means you can now write a flow script like this:
> 
> 
>   function test() {
>       sendPage("templates/flow-hello-page.vm",
>                {
>                    name: "Cocoon",
>                    project: "Velocity",
>                    when: new java.util.Date()
>                });
>   }
> 
> 
> that calls a Velocity template like this:
> 
>   <?xml version="1.0"?>
>   <page>
>    <title>Hello</title>
>    <content>
>     <para>This is my first Cocoon2 page!</para>
>     <para>Hi!  This page is generated using $this.name from the 
> $this.project project.</para>
>     <para>Hi!  I can also access name, project, and when like this: This 
> page is generated using $name from the $project project at 
> $when.toString() .</para>
>    </content>
>   </page>
> 
> 
> When the build for samples is fixed, I'll add a sample of using Velocity 
> with flow scripts, but you should be able to try it yourself, so please 
> do and let me know of any problems.

This is very nice.

Thanks Chris!

-- 
Stefano Mazzocchi                               <st...@apache.org>
    Pluralitas non est ponenda sine necessitate [William of Ockham]
--------------------------------------------------------------------