|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectfreemarker.core.Configurable
freemarker.template.Template
public class Template
A core FreeMarker API that represents a compiled template.
Typically, you will use a Configuration
object to instantiate a template.
Configuration cfg = new Configuration(); ... Template myTemplate = cfg.getTemplate("myTemplate.html");
However, you can also construct a template directly by passing in to the appropriate constructor a java.io.Reader instance that is set to read the raw template text. The compiled template is stored in an an efficient data structure for later use.
To render the template, i.e. to merge it with a data model, and thus produce "cooked" output, call the process method.
Any error messages from exceptions thrown during compilation will be
included in the output stream and thrown back to the calling code.
To change this behavior, you can install custom exception handlers using
Configurable.setTemplateExceptionHandler(TemplateExceptionHandler)
on
a Configuration object (for all templates belonging to a configuration) or on
a Template object (for a single template).
It's not legal to modify the values of FreeMarker settings: a) while the template is executing; b) if the template object is already accessible from multiple threads.
Nested Class Summary | |
---|---|
static class |
Template.WrongEncodingException
|
Nested classes/interfaces inherited from class freemarker.core.Configurable |
---|
Configurable.UnknownSettingException |
Field Summary | |
---|---|
static java.lang.String |
DEFAULT_NAMESPACE_PREFIX
|
static java.lang.String |
NO_NS_PREFIX
|
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 | |
---|---|
Template(java.lang.String name,
java.io.Reader reader)
Deprecated. This constructor uses the "default" Configuration
instance, which can easily lead to erroneous, unpredictable behaviour.
See more here... . |
|
Template(java.lang.String name,
java.io.Reader reader,
Configuration cfg)
This is equivalent to Template(name, reader, cfg, null) |
|
Template(java.lang.String name,
java.io.Reader reader,
Configuration cfg,
java.lang.String encoding)
Constructs a template from a character stream. |
Method Summary | |
---|---|
void |
addImport(LibraryLoad ll)
Called by code internally to maintain a list of imports |
void |
addMacro(Macro macro)
Called by code internally to maintain a table of macros |
void |
addPrefixNSMapping(java.lang.String prefix,
java.lang.String nsURI)
This is used internally. |
javax.swing.tree.TreePath |
containingElements(int column,
int line)
|
Environment |
createProcessingEnvironment(java.lang.Object rootMap,
java.io.Writer out)
Same as createProcessingEnvironment(rootMap, out, null) . |
Environment |
createProcessingEnvironment(java.lang.Object rootMap,
java.io.Writer out,
ObjectWrapper wrapper)
Creates a Environment object,
using this template, the data model provided as the root map object, and
the supplied object wrapper to convert map elements to template models. |
void |
dump(java.io.PrintStream ps)
Dump the raw template in canonical form. |
void |
dump(java.io.Writer out)
Dump the raw template in canonical form. |
Configuration |
getConfiguration()
Returns the Configuration object associated with this template. |
java.lang.String |
getDefaultNS()
|
java.lang.String |
getEncoding()
Returns the character encoding used for reading included files. |
java.util.List |
getImports()
|
java.util.Map |
getMacros()
|
java.lang.String |
getName()
The path of the template file relative to the directory what you use to store the templates. |
java.lang.String |
getNamespaceForPrefix(java.lang.String prefix)
|
static Template |
getPlainTextTemplate(java.lang.String name,
java.lang.String content,
Configuration config)
Returns a trivial template, one that is just a single block of plain text, no dynamic content. |
java.lang.String |
getPrefixedName(java.lang.String localName,
java.lang.String nsURI)
|
java.lang.String |
getPrefixForNamespace(java.lang.String nsURI)
|
TemplateElement |
getRootTreeNode()
|
java.lang.String |
getSource(int beginColumn,
int beginLine,
int endColumn,
int endLine)
Returns the template source at the location specified by the coordinates given. |
void |
process(java.lang.Object rootMap,
java.io.Writer out)
Processes the template, using data from the map, and outputs the resulting text to the supplied Writer The elements of the map are converted to template models using the default object wrapper returned by the getObjectWrapper()
method of the Configuration. |
void |
process(java.lang.Object rootMap,
java.io.Writer out,
ObjectWrapper wrapper)
Processes the template, using data from the root map object, and outputs the resulting text to the supplied writer, using the supplied object wrapper to convert map elements to template models. |
void |
process(java.lang.Object rootMap,
java.io.Writer out,
ObjectWrapper wrapper,
TemplateNodeModel rootNode)
Processes the template, using data from the root map object, and outputs the resulting text to the supplied writer, using the supplied object wrapper to convert map elements to template models. |
void |
setEncoding(java.lang.String encoding)
Sets the character encoding to use for included files. |
java.lang.String |
toString()
Returns a string representing the raw template text in canonical form. |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final java.lang.String DEFAULT_NAMESPACE_PREFIX
public static final java.lang.String NO_NS_PREFIX
Constructor Detail |
---|
public Template(java.lang.String name, java.io.Reader reader, Configuration cfg, java.lang.String encoding) throws java.io.IOException
name
- the path of the template file relative to the directory what you use to store
the templates. See getName()
for more details.reader
- the character stream to read from. It will always be closed (Reader.close()).cfg
- the Configuration object that this Template is associated with.
If this is null, the "default" Configuration
object is used,
which is highly discouraged, because it can easily lead to
erroneous, unpredictable behaviour.
(See more here...
)encoding
- This is the encoding that we are supposed to be using. If this is
non-null (It's not actually necessary because we are using a Reader) then it is
checked against the encoding specified in the FTL header -- assuming that is specified,
and if they don't match a WrongEncodingException is thrown.
java.io.IOException
public Template(java.lang.String name, java.io.Reader reader, Configuration cfg) throws java.io.IOException
java.io.IOException
public Template(java.lang.String name, java.io.Reader reader) throws java.io.IOException
Configuration
instance, which can easily lead to erroneous, unpredictable behaviour.
See more here...
.
java.io.IOException
Method Detail |
---|
public static Template getPlainTextTemplate(java.lang.String name, java.lang.String content, Configuration config)
name
- the path of the template file relative to the directory what you use to store
the templates. See getName()
for more details.content
- the block of text that this template representsconfig
- the configuration to which this template belongspublic void process(java.lang.Object rootMap, java.io.Writer out) throws TemplateException, java.io.IOException
getObjectWrapper()
method of the Configuration.
rootMap
- the root node of the data model. If null, an
empty data model is used. Can be any object that the effective object
wrapper can turn into a TemplateHashModel. Basically, simple and
beans wrapper can turn java.util.Map objects into hashes
and the Jython wrapper can turn both a PyDictionary as well as
any object that implements __getitem__ into a template hash.
Naturally, you can pass any object directly implementing
TemplateHashModel as well.out
- a Writer to output the text to.
TemplateException
- if an exception occurs during template processing
java.io.IOException
- if an I/O exception occurs during writing to the writer.public void process(java.lang.Object rootMap, java.io.Writer out, ObjectWrapper wrapper, TemplateNodeModel rootNode) throws TemplateException, java.io.IOException
rootMap
- the root node of the data model. If null, an
empty data model is used. Can be any object that the effective object
wrapper can turn into a TemplateHashModel Basically, simple and
beans wrapper can turn java.util.Map objects into hashes
and the Jython wrapper can turn both a PyDictionary as well as any
object that implements __getitem__ into a template hash.
Naturally, you can pass any object directly implementing
TemplateHashModel as well.wrapper
- The object wrapper to use to wrap objects into
TemplateModel
instances. If null, the default wrapper retrieved
by Configurable.getObjectWrapper()
is used.out
- the writer to output the text to.rootNode
- The root node for recursive processing, this may be null.
TemplateException
- if an exception occurs during template processing
java.io.IOException
- if an I/O exception occurs during writing to the writer.public void process(java.lang.Object rootMap, java.io.Writer out, ObjectWrapper wrapper) throws TemplateException, java.io.IOException
rootMap
- the root node of the data model. If null, an
empty data model is used. Can be any object that the effective object
wrapper can turn into a TemplateHashModel Basically, simple and
beans wrapper can turn java.util.Map objects into hashes
and the Jython wrapper can turn both a PyDictionary as well as any
object that implements __getitem__ into a template hash.
Naturally, you can pass any object directly implementing
TemplateHashModel as well.wrapper
- The object wrapper to use to wrap objects into
TemplateModel
instances. If null, the default wrapper retrieved
by Configurable.getObjectWrapper()
is used.out
- the writer to output the text to.
TemplateException
- if an exception occurs during template processing
java.io.IOException
- if an I/O exception occurs during writing to the writer.public Environment createProcessingEnvironment(java.lang.Object rootMap, java.io.Writer out, ObjectWrapper wrapper) throws TemplateException, java.io.IOException
Environment
object,
using this template, the data model provided as the root map object, and
the supplied object wrapper to convert map elements to template models.
You can then call Environment.process() on the returned environment
to set off the actual rendering.
Use this method if you want to do some special initialization on the environment
before template processing, or if you want to read the environment after template
processing.
Example:
This:
Environment env = myTemplate.createProcessingEnvironment(root, out, null); env.process();is equivalent with this:
myTemplate.process(root, out);But with createProcessingEnvironment, you can manipulate the environment before and after the processing:
Environment env = myTemplate.createProcessingEnvironment(root, out); env.include("include/common.ftl", null, true); // before processing env.process(); TemplateModel x = env.getVariable("x"); // after processing
rootMap
- the root node of the data model. If null, an
empty data model is used. Can be any object that the effective object
wrapper can turn into a TemplateHashModel Basically, simple and
beans wrapper can turn java.util.Map objects into hashes
and the Jython wrapper can turn both a PyDictionary as well as any
object that implements __getitem__ into a template hash.
Naturally, you can pass any object directly implementing
TemplateHashModel as well.wrapper
- The object wrapper to use to wrap objects into
TemplateModel
instances. If null, the default wrapper retrieved
by Configurable.getObjectWrapper()
is used.out
- the writer to output the text to.
Environment
object created for processing
TemplateException
- if an exception occurs while setting up the Environment object.
java.io.IOException
- if an exception occurs doing any auto-importspublic Environment createProcessingEnvironment(java.lang.Object rootMap, java.io.Writer out) throws TemplateException, java.io.IOException
createProcessingEnvironment(rootMap, out, null)
.
TemplateException
java.io.IOException
createProcessingEnvironment(Object rootMap, Writer out, ObjectWrapper wrapper)
public java.lang.String toString()
toString
in class java.lang.Object
public java.lang.String getName()
"directoryForTemplateLoading"
,
then name should be "community/forum.fm". The name is used for example when you
use <include ...> and you give a path that is relative to the current
template, or in error messages when FreeMarker logs an error while it processes the template.
public Configuration getConfiguration()
public void setEncoding(java.lang.String encoding)
public java.lang.String getEncoding()
public void dump(java.io.PrintStream ps)
public void dump(java.io.Writer out) throws java.io.IOException
java.io.IOException
public void addMacro(Macro macro)
public void addImport(LibraryLoad ll)
public java.lang.String getSource(int beginColumn, int beginLine, int endColumn, int endLine)
beginColumn
- the first column of the requested source, 1-basedbeginLine
- the first line of the requested source, 1-basedendColumn
- the last column of the requested source, 1-basedendLine
- the last line of the requested source, 1-basedTemplateObject.getSource()
public TemplateElement getRootTreeNode()
public java.util.Map getMacros()
public java.util.List getImports()
public void addPrefixNSMapping(java.lang.String prefix, java.lang.String nsURI)
public java.lang.String getDefaultNS()
public java.lang.String getNamespaceForPrefix(java.lang.String prefix)
public java.lang.String getPrefixForNamespace(java.lang.String nsURI)
public java.lang.String getPrefixedName(java.lang.String localName, java.lang.String nsURI)
public javax.swing.tree.TreePath containingElements(int column, int line)
column
- the columnline
- the line
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |