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]
--------------------------------------------------------------------