Home » freemarker-2.3.13 » freemarker.core » [javadoc | source]
public final class: Environment [javadoc | source]
Object that represents the runtime environment during template processing. For every invocation of a Template.process() method, a new instance of this object is created, and then discarded when process() returns. This object stores the set of temporary variables created by the template, the value of settings set by the template, the reference to the data model root, etc. Everything that is needed to fulfill the template processing job.

Data models that need to access the Environment object that represents the template processing on the current thread can use the #getCurrentEnvironment() method.

If you need to modify or read this object before or after the process call, use Template#createProcessingEnvironment(Object rootMap, Writer out, ObjectWrapper wrapper)

Nested Class Summary:
public class  Environment.Namespace   
Field Summary
static final  Writer NULL_WRITER     
Fields inherited from freemarker.core.Configurable:
 public Environment(Template template,
    TemplateHashModel rootDataModel,
    Writer out) 
Method from freemarker.core.Environment Summary:
__getitem__,   __setitem__,   clearLastReturnValue,   fallback,   formatDate,   formatNumber,   getCNumberFormat,   getCollator,   getConfiguration,   getCurrentEnvironment,   getCurrentMacroContext,   getCurrentNamespace,   getCurrentRecoveredErrorMesssage,   getCurrentVisitorNode,   getDataModel,   getDateFormatObject,   getDateFormatObject,   getDefaultNS,   getEffectiveURLEscapingCharset,   getGlobalNamespace,   getGlobalVariable,   getGlobalVariables,   getKnownVariableNames,   getLastReturnValue,   getLocalContextStack,   getLocalVariable,   getMacroNamespace,   getMainNamespace,   getNamespace,   getNamespaceForPrefix,   getNodeProcessor,   getNumberFormatObject,   getOut,   getPrefixForNamespace,   getTemplate,   getTemplateForImporting,   getTemplateForInclusion,   getTransform,   getVariable,   importLib,   importLib,   importMacros,   include,   include,   outputInstructionStack,   parseDateStyleToken,   process,   recurse,   renderElementToString,   setCurrentVisitorNode,   setDateFormat,   setDateTimeFormat,   setGlobalVariable,   setLastReturnValue,   setLocalVariable,   setLocale,   setNumberFormat,   setOut,   setOutputEncoding,   setTemplateExceptionHandler,   setTimeFormat,   setTimeZone,   setURLEscapingCharset,   setVariable,   visit,   visit,   visit,   visit,   visit,   visit,   visit,   visit,   visitMacroDef
Methods from freemarker.core.Configurable:
clone,   getArithmeticEngine,   getBooleanFormat,   getBooleanFormat,   getCustomAttribute,   getCustomAttribute,   getCustomAttributeNames,   getDateFormat,   getDateTimeFormat,   getEnvironment,   getLocale,   getNumberFormat,   getObjectWrapper,   getOutputEncoding,   getParent,   getSetting,   getSettings,   getTemplateExceptionHandler,   getTimeFormat,   getTimeZone,   getURLEscapingCharset,   invalidSettingValueException,   isClassicCompatible,   removeCustomAttribute,   setArithmeticEngine,   setBooleanFormat,   setClassicCompatible,   setCustomAttribute,   setCustomAttribute,   setDateFormat,   setDateTimeFormat,   setLocale,   setNumberFormat,   setObjectWrapper,   setOutputEncoding,   setParent,   setSetting,   setSettings,   setSettings,   setStrictBeanModels,   setTemplateExceptionHandler,   setTimeFormat,   setTimeZone,   setURLEscapingCharset,   unknownSettingException
Methods from java.lang.Object:
equals,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from freemarker.core.Environment Detail:
 public Object __getitem__(String key) throws TemplateModelException 
    A hook that Jython uses.
 public  void __setitem__(String key,
    Object o) throws TemplateException 
    A hook that Jython uses.
  void clearLastReturnValue() 
  void fallback() throws IOException, TemplateException 
 String formatDate(Date date,
    int type) throws TemplateModelException 
 String formatNumber(Number number) 
 public NumberFormat getCNumberFormat() 
    Returns the NumberFormat used for the c built-in. This is always US English "0.################", without grouping and without superfluous decimal separator.
 Collator getCollator() 
 public Configuration getConfiguration() 
 public static Environment getCurrentEnvironment() 
    Retrieves the environment object associated with the current thread. Data model implementations that need access to the environment can call this method to obtain the environment object that represents the template processing that is currently running on the current thread.
 Macro.Context getCurrentMacroContext() 
 public Environment.Namespace getCurrentNamespace() 
    Returns the main name-space. This is correspondent of FTL .namespace hash.
 String getCurrentRecoveredErrorMesssage() throws TemplateException 
 public TemplateNodeModel getCurrentVisitorNode() 
 public TemplateHashModel getDataModel() 
 DateFormat getDateFormatObject(int dateType) throws TemplateModelException 
 DateFormat getDateFormatObject(int dateType,
    String pattern) throws TemplateModelException 
 public String getDefaultNS() 
 String getEffectiveURLEscapingCharset() 
    Returns the name of the charset that should be used for URL encoding. This will be null if the information is not available. The function caches the return value, so it is quick to call it repeately.
 public Environment.Namespace getGlobalNamespace() 
    Returns a fictitious name-space that contains the globally visible variables that were created in the template, but not the variables of the data-model. There is no such thing in FTL; this strange method was added because of the JSP taglib support, since this imaginary name-space contains the page-scope attributes.
 public TemplateModel getGlobalVariable(String name) throws TemplateModelException 
    Returns the globally visible variable of the given name (or null). This is correspondent to FTL .globals.name. This will first look at variables that were assigned globally via: <#global ...> and then at the data model exposed to the template.
 public TemplateHashModel getGlobalVariables() 
    Returns the read-only hash of globally visible variables. This is the correspondent of FTL .globals hash. That is, you see the variables created with <#global ...>, and the variables of the data-model. To create new global variables, use setGlobalVariable .
 public Set getKnownVariableNames() throws TemplateModelException 
    Returns a set of variable names that are known at the time of call. This includes names of all shared variables in the Configuration , names of all global variables that were assigned during the template processing, names of all variables in the current name-space, names of all local variables and loop variables. If the passed root data model implements the TemplateHashModelEx interface, then all names it retrieves through a call to TemplateHashModelEx#keys() method are returned as well. The method returns a new Set object on each call that is completely disconnected from the Environment. That is, modifying the set will have no effect on the Environment object.
 TemplateModel getLastReturnValue() 
 ArrayList getLocalContextStack() 
 public TemplateModel getLocalVariable(String name) throws TemplateModelException 
    Returns the loop or macro local variable corresponding to this variable name. Possibly null. (Note that the misnomer is kept for backward compatibility: loop variables are not local variables according to our terminology.)
 Environment.Namespace getMacroNamespace(Macro macro) 
 public Environment.Namespace getMainNamespace() 
    Returns the main name-space. This is correspondent of FTL .main hash.
 public Environment.Namespace getNamespace(String name) 
    Returns the name-space for the name if exists, or null.
 public String getNamespaceForPrefix(String prefix) 
 TemplateModel getNodeProcessor(TemplateNodeModel node) throws TemplateException 
 NumberFormat getNumberFormatObject(String pattern) 
 public Writer getOut() 
 public String getPrefixForNamespace(String nsURI) 
 public Template getTemplate() 
    Retrieves the currently processed template.
 public Template getTemplateForImporting(String name) throws IOException 
 public Template getTemplateForInclusion(String name,
    String encoding,
    boolean parse) throws IOException 
    Gets a template for inclusion; used with #include(Template includedTemplate) . The advantage over simply using config.getTemplate(...) is that it chooses the default encoding as the include directive does.
 TemplateTransformModel getTransform(Expression exp) throws TemplateException 
 public TemplateModel getVariable(String name) throws TemplateModelException 
    Returns the variable that is visible in this context. This is the correspondent to an FTL top-level variable reading expression. That is, it tries to find the the variable in this order:
    1. An loop variable (if we're in a loop or user defined directive body) such as foo_has_next
    2. A local variable (if we're in a macro)
    3. A variable defined in the current namespace (say, via <#assign ...>)
    4. A variable defined globally (say, via <#global ....>)
    5. Variable in the data model:
      1. A variable in the root hash that was exposed to this rendering environment in the Template.process(...) call
      2. A shared variable set in the configuration via a call to Configuration.setSharedVariable(...)
 public Environment.Namespace importLib(String name,
    String namespace) throws IOException, TemplateException 
    Emulates import directive, except that name must be tempate root relative.

    It's the same as importLib(getTemplateForImporting(name), namespace). But, you may want to separately call these two methods, so you can determine the source of exceptions more precisely, and thus achieve more intelligent error handling.

 public Environment.Namespace importLib(Template loadedTemplate,
    String namespace) throws IOException, TemplateException 
    Emulates import directive.
  void importMacros(Template template) 
 public  void include(Template includedTemplate) throws IOException, TemplateException 
    Processes a Template in the context of this Environment, including its output in the Environment's Writer.
 public  void include(String name,
    String encoding,
    boolean parse) throws IOException, TemplateException 
    Emulates include directive, except that name must be tempate root relative.

    It's the same as include(getTemplateForInclusion(name, encoding, parse)). But, you may want to separately call these two methods, so you can determine the source of exceptions more precisely, and thus achieve more intelligent error handling.

 public  void outputInstructionStack(PrintWriter pw) 
    Outputs the instruction stack. Useful for debugging. TemplateException s incorporate this information in their stack traces.
 int parseDateStyleToken(String token) 
 public  void process() throws IOException, TemplateException 
    Processes the template to which this environment belongs.
  void recurse(TemplateNodeModel node,
    TemplateSequenceModel namespaces) throws IOException, TemplateException 
 String renderElementToString(TemplateElement te) throws IOException, TemplateException 
 public  void setCurrentVisitorNode(TemplateNodeModel node) 
    sets TemplateNodeModel as the current visitor node. .current_node
 public  void setDateFormat(String formatName) 
 public  void setDateTimeFormat(String formatName) 
 public  void setGlobalVariable(String name,
    TemplateModel model) 
    Sets a variable that is visible globally. This is correspondent to FTL <#global name=model>. This can be considered a convenient shorthand for: getGlobalNamespace().put(name, model)
  void setLastReturnValue(TemplateModel lastReturnValue) 
 public  void setLocalVariable(String name,
    TemplateModel model) 
    Sets a local variable (one effective only during a macro invocation). This is correspondent to FTL <#local name=model>.
 public  void setLocale(Locale locale) 
 public  void setNumberFormat(String formatName) 
 public  void setOut(Writer out) 
 public  void setOutputEncoding(String outputEncoding) 
 public  void setTemplateExceptionHandler(TemplateExceptionHandler templateExceptionHandler) 
 public  void setTimeFormat(String formatName) 
 public  void setTimeZone(TimeZone timeZone) 
 public  void setURLEscapingCharset(String urlEscapingCharset) 
 public  void setVariable(String name,
    TemplateModel model) 
    Sets a variable in the current namespace. This is correspondent to FTL <#assign name=model>. This can be considered a convenient shorthand for: getCurrentNamespace().put(name, model)
  void visit(TemplateElement element) throws IOException, TemplateException 
    "Visit" the template element.
  void visit(BodyInstruction.Context bctxt) throws IOException, TemplateException 
  void visit(IteratorBlock.Context ictxt) throws IOException, TemplateException 
    "visit" an IteratorBlock
  void visit(TemplateElement attemptBlock,
    TemplateElement recoveryBlock) throws IOException, TemplateException 
    Visit a block using buffering/recovery
  void visit(TemplateNodeModel node,
    TemplateSequenceModel namespaces) throws IOException, TemplateException 
    "Visit" A TemplateNodeModel
  void visit(TemplateElement element,
    TemplateTransformModel transform,
    Map args) throws IOException, TemplateException 
    "Visit" the template element, passing the output through a TemplateTransformModel
 public  void visit(TemplateElement element,
    TemplateDirectiveModel directiveModel,
    Map args,
    List bodyParameterNames) throws IOException, TemplateException 
  void visit(Macro macro,
    Map namedArgs,
    List positionalArgs,
    List bodyParameterNames,
    TemplateElement nestedBlock) throws IOException, TemplateException 
    "visit" a macro.
  void visitMacroDef(Macro macro)