9.6. Using a Simple Templating Language
Problem
You need to produce a parameterized message using a template stored in a file.
Solution
Use Jakarta Velocity and store your template in the filesystem. Jakarta Velocity is a straightforward templating engine with a lightweight syntax similar to the expression language introduced in Recipe 9.2. The following Velocity template is used to create an email:
#set( $customer = $subscription.customer ) #set( $magazine = $subscription.magazine ) $customer.firstName, Your subscription to ${magazine.title} on $subscription.endDate. If you are interested in renewing your subscription, please click on the following URL, and enter your password: ${magazine.baseUrl}/renew?cust=${customer.id}
This template references a Subscription
bean bound
to the name subscription
. This
Subscription
object has a
customer
property and a
magazine
property, and both of these properties
are assigned to a local template variable using the
#set
directive. To render a Velocity template, the
engine is initialized using Velocity.init( )
, a VelocityContext
is
created and populated, and the template is read with a
FileReader
.
The following code renders this template:
import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; // Initialize Velocity Velocity.init( ); // Create a context and put our subscription object into the context VelocityContext context = new VelocityContext( ); context.put("subscription", testSubscription( )); // Create a Reader ...
Get Jakarta Commons Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.