Provides a specialized panel and some related utilities that enables users to work with Apache Velocity and Apache Wicket. Particularly useful for simple CMS like applications.
Velocity brings a templating language to your users. You can let them create conditional markup, use loops and do all other things made possible by Velocity.
Velocity templates look like the following:
{% highlight html %} #set ($foo = “deoxyribonucleic acid”) #set ($bar = “ribonucleic acid”)
#if ($foo == $bar) In this case it‘s clear they aren’t equivalent. So... #else They are not equivalent and this will be the output. #end {% endhighlight %}
Read more about the Velocity template language.
This project allows you to use Velocity templates as a component within your Wicket pages, and let them live next to Wicket components. A typical usecase would be to enable your users to embed Velocity templates in your application and using that as a type of portlet.
The main component for the Veloticy/Wicket integration is the VelocityPanel
.
Showing Hello, World using Velocity in a Wicket application, embedded in a Wicket page.
{% highlight html %}
In this template we want to replace the string $message
with the text “Hello, World!”. $message
is Velocity markup denoting a variable that is taken from the context that is provided to the Velocity rendering engine.
To use Velocity in your Wicket pages we provide a VelocityPanel
which enables you to generate parts of your page using Velocity markup. Adding the panel to your Wicket page is shown in the following example:
{% highlight java %} public VelocityPage() { HashMap<String, String> values = new HashMap<String, String>(); values.put(“message”, “Hello, World!”); Model<HashMap<String, String>> context = Model.of(values);
UrlResourceStream template = new UrlResourceStream(getClass().getResource("test.html")); add(VelocityPanel.forTemplateResource("velocityPanel", context, template));
} {% endhighlight %}
VelocityPanel.forTemplateResource
creates a VelocityPanel
and sets up the engine such that the context is merged with the template with each render.
The markup of the page is quite simple: adding a VelocityPanel is as simple as using a div
and attaching a wicket:identifier
to it. The following example shows this.
{% highlight html %}
Installing Wicket Velocity can be done through adding a dependency in your project's Maven pom, or by putting the wicket-velocity.jar and the required dependencies in your projects classpath.
Add the following dependency to your pom:
{% highlight xml %} org.apache.wicket wicket-velocity {{site.wicket.version}} {% endhighlight %}
Wicket Velocity requires the following jar files to be on your classpath:
Check the Apache Velocity project to find out which other dependencies you need.