freemarker.template.utility
Class Execute

java.lang.Object
  |
  +--freemarker.template.utility.Execute
All Implemented Interfaces:
TemplateMethodModel, TemplateModel

public class Execute
extends java.lang.Object
implements TemplateMethodModel

Gives FreeMarker the the ability to execute external commands. Will fork a process, and inline anything that process sends to stdout in the template. Based on a patch submitted by Peter Molettiere.

BE CAREFUL! this tag, depending on use, may allow you to set something up so that users of your web application could run arbitrary code on your server. This can only happen if you allow unchecked GET/POST submissions to be used as the command string in the exec tag.

Usage:
From java:

 TemplateModelRoot root = new SimpleHash();

 root.put( "exec", new freemarker.template.utility.Execute() );

 ...
 

From your FreeMarker template:


 The following is executed:
 ${exec( "/usr/bin/ls" )}

 ...
 

Version:
$Id: Execute.java,v 1.4 2002/03/09 20:57:04 revusky Exp $

Constructor Summary
Execute()
          Creates new Execute FreeMarker template
 
Method Summary
 TemplateModel exec(java.util.List arguments)
          Executes a method call.
 boolean isEmpty()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Execute

public Execute()
Creates new Execute FreeMarker template
Method Detail

exec

public TemplateModel exec(java.util.List arguments)
                   throws TemplateModelException
Executes a method call.
Specified by:
exec in interface TemplateMethodModel
Parameters:
arguments - a List of String objects containing the values of the arguments passed to the method.
Returns:
the TemplateModel produced by the method, or null.

isEmpty

public boolean isEmpty()
                throws TemplateModelException
Specified by:
isEmpty in interface TemplateModel
Returns:
true if this object is empty.