Un objeto se puede establecer en el contexto de la plantilla Velocity. Ese Objeto puede ser llamado desde la plantilla usando su nombre.
Supongamos que queremos que la plantilla llame al método hello del objeto de ejemplo del VelocityJavaMethodExample.
public class VelocityJavaMethodExample { public String hello( String input ){ return "Hello " + input; } }
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 VelocityJavaMethodRun { public static void main(String[] argv){ // Source directory String sourceDirectory = "V:/tmp/velocity/"; // Create the velocity engine 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 Template t = ve.getTemplate( "example3.vm" ); // Create the Context VelocityContext context = new VelocityContext(); context.put("MyVariable", new VelocityJavaMethodExample() ); try { // Create the output file Writer out = new BufferedWriter(new OutputStreamWriter( new FileOutputStream( new File( sourceDirectory + "example3.txt" ) ), "UTF8") ); t.merge( context, out); out.close(); } catch ( Exception e ){ e.printStackTrace(); } } }
이것은 시험이다.
Llame al método de Java: $MyVariable.hello( $input )
이것은 시험이다. Llame al método de Java: Hello World