The velocity template access the values defined in the context using the $ character, the output is printed in the result.
Hello $name!
This is a test
This example loads the VelocityEngine and initializes the engine. Then it loads the template by accessing it using the template file. The VelocityContext is created, the property name is added with the value Olivier. The output file writer is created and the template merges the context in the output file. The writer is closed to ensure the file is closed on the filesystem. If any error happens they are written in system err.
import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.VelocityEngine; public class VelocitySimpleValue { public static void main(String[] argv){ // Source directory String sourceDirectory = "V:/tmp/velocity/"; // Source directory VelocityEngine ve = new VelocityEngine(); ve.setProperty( "resource.loader", "file"); ve.setProperty( "file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader"); ve.setProperty( "file.resource.loader.path", sourceDirectory); ve.setProperty( "file.resource.loader.cache", true); ve.setProperty( "file.resource.loader.modificationCheckInterval", "2"); ve.init(); // Get the template file Template t = ve.getTemplate( "example_value.vm" ); // Create the context and add the properties VelocityContext context = new VelocityContext(); context.put("name", "Olivier"); try { // Create the output file Writer out = new BufferedWriter(new OutputStreamWriter( new FileOutputStream( new File( sourceDirectory + "example_value.txt" ) ), "UTF8") ); // Merge template with the context t.merge( context, out); // Close the output file out.close(); } catch ( Exception e ){ e.printStackTrace(); } } }
Hello Olivier!
This is a test
The merged text is written in the output file. In this example Hello Olivier! is written in the output. The template value $name was merged with the value name from the VelocityContext passed when the template was merged. The input is encoded in utf-8, this way all the utf-8 characters can be passed in the context and merged with the template.