|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectfreemarker.core.Configurable
freemarker.core.Environment
public final class Environment
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 | |
---|---|
class |
Environment.Namespace
|
Nested classes/interfaces inherited from class freemarker.core.Configurable |
---|
Configurable.UnknownSettingException |
Field Summary |
---|
Fields inherited from class freemarker.core.Configurable |
---|
ARITHMETIC_ENGINE_KEY, BOOLEAN_FORMAT_KEY, CLASSIC_COMPATIBLE_KEY, DATE_FORMAT_KEY, DATETIME_FORMAT_KEY, LOCALE_KEY, NUMBER_FORMAT_KEY, OBJECT_WRAPPER_KEY, OUTPUT_ENCODING_KEY, STRICT_BEAN_MODELS, TEMPLATE_EXCEPTION_HANDLER_KEY, TIME_FORMAT_KEY, TIME_ZONE_KEY, URL_ESCAPING_CHARSET_KEY |
Constructor Summary | |
---|---|
Environment(Template template,
TemplateHashModel rootDataModel,
java.io.Writer out)
|
Method Summary | |
---|---|
java.lang.Object |
__getitem__(java.lang.String key)
A hook that Jython uses. |
void |
__setitem__(java.lang.String key,
java.lang.Object o)
A hook that Jython uses. |
java.text.NumberFormat |
getCNumberFormat()
Returns the NumberFormat used for the c built-in. |
Configuration |
getConfiguration()
|
static Environment |
getCurrentEnvironment()
Retrieves the environment object associated with the current thread. |
Environment.Namespace |
getCurrentNamespace()
Returns the main name-space. |
TemplateNodeModel |
getCurrentVisitorNode()
|
TemplateHashModel |
getDataModel()
|
java.lang.String |
getDefaultNS()
|
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. |
TemplateModel |
getGlobalVariable(java.lang.String name)
Returns the globally visible variable of the given name (or null). |
TemplateHashModel |
getGlobalVariables()
Returns the read-only hash of globally visible variables. |
java.util.Set |
getKnownVariableNames()
Returns a set of variable names that are known at the time of call. |
TemplateModel |
getLocalVariable(java.lang.String name)
Returns the loop or macro local variable corresponding to this variable name. |
Environment.Namespace |
getMainNamespace()
Returns the main name-space. |
Environment.Namespace |
getNamespace(java.lang.String name)
Returns the name-space for the name if exists, or null. |
java.lang.String |
getNamespaceForPrefix(java.lang.String prefix)
|
java.io.Writer |
getOut()
|
java.lang.String |
getPrefixForNamespace(java.lang.String nsURI)
|
Template |
getTemplate()
Retrieves the currently processed template. |
Template |
getTemplateForImporting(java.lang.String name)
Gets a template for importing; used with importLib(Template importedTemplate, String namespace) . |
Template |
getTemplateForInclusion(java.lang.String name,
java.lang.String encoding,
boolean parse)
Gets a template for inclusion; used with include(Template includedTemplate) . |
TemplateModel |
getVariable(java.lang.String name)
Returns the variable that is visible in this context. |
Environment.Namespace |
importLib(java.lang.String name,
java.lang.String namespace)
Emulates import directive, except that name must be tempate
root relative. |
Environment.Namespace |
importLib(Template loadedTemplate,
java.lang.String namespace)
Emulates import directive. |
void |
include(java.lang.String name,
java.lang.String encoding,
boolean parse)
Emulates include directive, except that name must be tempate
root relative. |
void |
include(Template includedTemplate)
Processes a Template in the context of this Environment , including its
output in the Environment 's Writer. |
void |
outputInstructionStack(java.io.PrintWriter pw)
Outputs the instruction stack. |
void |
process()
Processes the template to which this environment belongs. |
void |
setCurrentVisitorNode(TemplateNodeModel node)
sets TemplateNodeModel as the current visitor node. |
void |
setDateFormat(java.lang.String formatName)
Sets the date format used to convert date models representing date-only dates to strings. |
void |
setDateTimeFormat(java.lang.String formatName)
Sets the date format used to convert date models representing datetime dates to strings. |
void |
setGlobalVariable(java.lang.String name,
TemplateModel model)
Sets a variable that is visible globally. |
void |
setLocale(java.util.Locale locale)
Sets the locale to assume when searching for template files with no explicit requested locale. |
void |
setLocalVariable(java.lang.String name,
TemplateModel model)
Sets a local variable (one effective only during a macro invocation). |
void |
setNumberFormat(java.lang.String formatName)
Sets the number format used to convert numbers to strings. |
void |
setOut(java.io.Writer out)
|
void |
setOutputEncoding(java.lang.String outputEncoding)
Sets the output encoding. |
void |
setTemplateExceptionHandler(TemplateExceptionHandler templateExceptionHandler)
Sets the exception handler used to handle template exceptions. |
void |
setTimeFormat(java.lang.String formatName)
Sets the date format used to convert date models representing time-only values to strings. |
void |
setTimeZone(java.util.TimeZone timeZone)
Sets the time zone to use when formatting time values. |
void |
setURLEscapingCharset(java.lang.String urlEscapingCharset)
Sets the URL escaping charset. |
void |
setVariable(java.lang.String name,
TemplateModel model)
Sets a variable in the current namespace. |
void |
visit(TemplateElement element,
TemplateDirectiveModel directiveModel,
java.util.Map args,
java.util.List bodyParameterNames)
|
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public Environment(Template template, TemplateHashModel rootDataModel, java.io.Writer out)
Method Detail |
---|
public static Environment getCurrentEnvironment()
public Template getTemplate()
public void process() throws TemplateException, java.io.IOException
TemplateException
java.io.IOException
public void visit(TemplateElement element, TemplateDirectiveModel directiveModel, java.util.Map args, java.util.List bodyParameterNames) throws TemplateException, java.io.IOException
TemplateException
java.io.IOException
public void setTemplateExceptionHandler(TemplateExceptionHandler templateExceptionHandler)
Configurable
setTemplateExceptionHandler
in class Configurable
templateExceptionHandler
- the template exception handler to use for
handling TemplateException
s. By default,
TemplateExceptionHandler.HTML_DEBUG_HANDLER
is used.public void setLocale(java.util.Locale locale)
Configurable
setLocale
in class Configurable
public void setTimeZone(java.util.TimeZone timeZone)
Configurable
setTimeZone
in class Configurable
public void setURLEscapingCharset(java.lang.String urlEscapingCharset)
Configurable
null
, which means that the
output encoding will be used for URL escaping.
setURLEscapingCharset
in class Configurable
public void setOutputEncoding(java.lang.String outputEncoding)
Configurable
null
, which means that the
output encoding is not known.
setOutputEncoding
in class Configurable
public void setOut(java.io.Writer out)
public java.io.Writer getOut()
public void setNumberFormat(java.lang.String formatName)
Configurable
setNumberFormat
in class Configurable
public void setTimeFormat(java.lang.String formatName)
Configurable
setTimeFormat
in class Configurable
public void setDateFormat(java.lang.String formatName)
Configurable
setDateFormat
in class Configurable
public void setDateTimeFormat(java.lang.String formatName)
Configurable
setDateTimeFormat
in class Configurable
public Configuration getConfiguration()
public java.text.NumberFormat getCNumberFormat()
NumberFormat
used for the c built-in.
This is always US English "0.################"
, without
grouping and without superfluous decimal separator.
public TemplateModel getLocalVariable(java.lang.String name) throws TemplateModelException
TemplateModelException
public TemplateModel getVariable(java.lang.String name) throws TemplateModelException
TemplateModelException
public TemplateModel getGlobalVariable(java.lang.String name) throws TemplateModelException
.globals.name
.
This will first look at variables that were assigned globally via:
<#global ...> and then at the data model exposed to the template.
TemplateModelException
public void setGlobalVariable(java.lang.String name, TemplateModel model)
<#global name=model>
.
This can be considered a convenient shorthand for:
getGlobalNamespace().put(name, model)
public void setVariable(java.lang.String name, TemplateModel model)
<#assign name=model>
.
This can be considered a convenient shorthand for:
getCurrentNamespace().put(name, model)
public void setLocalVariable(java.lang.String name, TemplateModel model)
<#local name=model>
.
name
- the identifier of the variablemodel
- the value of the variable.
java.lang.IllegalStateException
- if the environment is not executing a
macro body.public java.util.Set getKnownVariableNames() throws TemplateModelException
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.
TemplateModelException
public void outputInstructionStack(java.io.PrintWriter pw)
TemplateException
s incorporate this information in their stack
traces.
public Environment.Namespace getNamespace(java.lang.String name)
name
- the template path that you have used with the import
directive
or importLib(String, String)
call, in normalized form. That is, the path must be an absolute
path, and it must not contain "/../" or "/./". The leading "/" is optional.public Environment.Namespace getMainNamespace()
.main
hash.
public Environment.Namespace getCurrentNamespace()
.namespace
hash.
public Environment.Namespace getGlobalNamespace()
public TemplateHashModel getDataModel()
public TemplateHashModel getGlobalVariables()
.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 TemplateNodeModel getCurrentVisitorNode()
public void setCurrentVisitorNode(TemplateNodeModel node)
public void include(java.lang.String name, java.lang.String encoding, boolean parse) throws java.io.IOException, TemplateException
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.
java.io.IOException
TemplateException
getTemplateForInclusion(String name, String encoding, boolean parse)
,
include(Template includedTemplate)
public Template getTemplateForInclusion(java.lang.String name, java.lang.String encoding, boolean parse) throws java.io.IOException
include(Template includedTemplate)
.
The advantage over simply using config.getTemplate(...)
is that it chooses
the default encoding as the include
directive does.
name
- the name of the template, relatively to the template root directory
(not the to the directory of the currently executing template file!).
(Note that you can use TemplateCache.getFullTemplatePath(freemarker.core.Environment, java.lang.String, java.lang.String)
to convert paths to template root relative paths.)encoding
- the encoding of the obtained template. If null,
the encoding of the Template that is currently being processed in this
Environment is used.parse
- whether to process a parsed template or just include the
unparsed template source.
java.io.IOException
public void include(Template includedTemplate) throws TemplateException, java.io.IOException
Environment
, including its
output in the Environment
's Writer.
includedTemplate
- the template to process. Note that it does not need
to be a template returned by
getTemplateForInclusion(String name, String encoding, boolean parse)
.
TemplateException
java.io.IOException
public Environment.Namespace importLib(java.lang.String name, java.lang.String namespace) throws java.io.IOException, TemplateException
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.
java.io.IOException
TemplateException
getTemplateForImporting(String name)
,
importLib(Template includedTemplate, String namespace)
public Template getTemplateForImporting(java.lang.String name) throws java.io.IOException
importLib(Template importedTemplate, String namespace)
. The advantage
over simply using config.getTemplate(...)
is that it chooses the encoding
as the import
directive does.
name
- the name of the template, relatively to the template root directory
(not the to the directory of the currently executing template file!).
(Note that you can use TemplateCache.getFullTemplatePath(freemarker.core.Environment, java.lang.String, java.lang.String)
to convert paths to template root relative paths.)
java.io.IOException
public Environment.Namespace importLib(Template loadedTemplate, java.lang.String namespace) throws java.io.IOException, TemplateException
import
directive.
loadedTemplate
- the template to import. Note that it does not need
to be a template returned by getTemplateForImporting(String name)
.
java.io.IOException
TemplateException
public java.lang.String getNamespaceForPrefix(java.lang.String prefix)
public java.lang.String getPrefixForNamespace(java.lang.String nsURI)
public java.lang.String getDefaultNS()
public java.lang.Object __getitem__(java.lang.String key) throws TemplateModelException
TemplateModelException
public void __setitem__(java.lang.String key, java.lang.Object o) throws TemplateException
TemplateException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |