blob: 4deb919917bc083cd31874b75e69dbd3cf0c126c [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_281) on Sun Jan 15 15:58:34 CET 2023 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Environment (FreeMarker 2.3.32 API)</title>
<meta name="date" content="2023-01-15">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Environment (FreeMarker 2.3.32 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":42,"i9":10,"i10":10,"i11":10,"i12":9,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":42,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":42};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/Environment.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../freemarker/core/DirectiveCallPlace.html" title="interface in freemarker.core"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?freemarker/core/Environment.html" target="_top">Frames</a></li>
<li><a href="Environment.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#fields.inherited.from.class.freemarker.core.Configurable">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">freemarker.core</div>
<h2 title="Class Environment" class="title">Class Environment</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">freemarker.core.Configurable</a></li>
<li>
<ul class="inheritance">
<li>freemarker.core.Environment</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public final class <span class="typeNameLabel">Environment</span>
extends <a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></pre>
<div class="block">Object that represents the runtime environment during template processing. For every invocation of a
<tt>Template.process()</tt> method, a new instance of this object is created, and then discarded when
<tt>process()</tt> 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.
<p>
Data models that need to access the <tt>Environment</tt> object that represents the template processing on the
current thread can use the <a href="../../freemarker/core/Environment.html#getCurrentEnvironment--"><code>getCurrentEnvironment()</code></a> method.
<p>
If you need to modify or read this object before or after the <tt>process</tt> call, use
<a href="../../freemarker/template/Template.html#createProcessingEnvironment-java.lang.Object-java.io.Writer-freemarker.template.ObjectWrapper-"><code>Template.createProcessingEnvironment(Object rootMap, Writer out, ObjectWrapper wrapper)</code></a></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core">Environment.Namespace</a></span></code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.freemarker.core.Configurable">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;freemarker.core.<a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></h3>
<code><a href="../../freemarker/core/Configurable.SettingValueAssignmentException.html" title="class in freemarker.core">Configurable.SettingValueAssignmentException</a>, <a href="../../freemarker/core/Configurable.UnknownSettingException.html" title="class in freemarker.core">Configurable.UnknownSettingException</a></code></li>
</ul>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.freemarker.core.Configurable">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;freemarker.core.<a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></h3>
<code><a href="../../freemarker/core/Configurable.html#API_BUILTIN_ENABLED_KEY">API_BUILTIN_ENABLED_KEY</a>, <a href="../../freemarker/core/Configurable.html#API_BUILTIN_ENABLED_KEY_CAMEL_CASE">API_BUILTIN_ENABLED_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#API_BUILTIN_ENABLED_KEY_SNAKE_CASE">API_BUILTIN_ENABLED_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#ARITHMETIC_ENGINE_KEY">ARITHMETIC_ENGINE_KEY</a>, <a href="../../freemarker/core/Configurable.html#ARITHMETIC_ENGINE_KEY_CAMEL_CASE">ARITHMETIC_ENGINE_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#ARITHMETIC_ENGINE_KEY_SNAKE_CASE">ARITHMETIC_ENGINE_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#ATTEMPT_EXCEPTION_REPORTER_KEY">ATTEMPT_EXCEPTION_REPORTER_KEY</a>, <a href="../../freemarker/core/Configurable.html#ATTEMPT_EXCEPTION_REPORTER_KEY_CAMEL_CASE">ATTEMPT_EXCEPTION_REPORTER_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#ATTEMPT_EXCEPTION_REPORTER_KEY_SNAKE_CASE">ATTEMPT_EXCEPTION_REPORTER_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#AUTO_FLUSH_KEY">AUTO_FLUSH_KEY</a>, <a href="../../freemarker/core/Configurable.html#AUTO_FLUSH_KEY_CAMEL_CASE">AUTO_FLUSH_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#AUTO_FLUSH_KEY_SNAKE_CASE">AUTO_FLUSH_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#AUTO_IMPORT_KEY">AUTO_IMPORT_KEY</a>, <a href="../../freemarker/core/Configurable.html#AUTO_IMPORT_KEY_CAMEL_CASE">AUTO_IMPORT_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#AUTO_IMPORT_KEY_SNAKE_CASE">AUTO_IMPORT_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#AUTO_INCLUDE_KEY">AUTO_INCLUDE_KEY</a>, <a href="../../freemarker/core/Configurable.html#AUTO_INCLUDE_KEY_CAMEL_CASE">AUTO_INCLUDE_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#AUTO_INCLUDE_KEY_SNAKE_CASE">AUTO_INCLUDE_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#BOOLEAN_FORMAT_KEY">BOOLEAN_FORMAT_KEY</a>, <a href="../../freemarker/core/Configurable.html#BOOLEAN_FORMAT_KEY_CAMEL_CASE">BOOLEAN_FORMAT_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#BOOLEAN_FORMAT_KEY_SNAKE_CASE">BOOLEAN_FORMAT_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#C_FORMAT_KEY">C_FORMAT_KEY</a>, <a href="../../freemarker/core/Configurable.html#C_FORMAT_KEY_CAMEL_CASE">C_FORMAT_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#C_FORMAT_KEY_SNAKE_CASE">C_FORMAT_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#CLASSIC_COMPATIBLE_KEY">CLASSIC_COMPATIBLE_KEY</a>, <a href="../../freemarker/core/Configurable.html#CLASSIC_COMPATIBLE_KEY_CAMEL_CASE">CLASSIC_COMPATIBLE_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#CLASSIC_COMPATIBLE_KEY_SNAKE_CASE">CLASSIC_COMPATIBLE_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#CUSTOM_DATE_FORMATS_KEY">CUSTOM_DATE_FORMATS_KEY</a>, <a href="../../freemarker/core/Configurable.html#CUSTOM_DATE_FORMATS_KEY_CAMEL_CASE">CUSTOM_DATE_FORMATS_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#CUSTOM_DATE_FORMATS_KEY_SNAKE_CASE">CUSTOM_DATE_FORMATS_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#CUSTOM_NUMBER_FORMATS_KEY">CUSTOM_NUMBER_FORMATS_KEY</a>, <a href="../../freemarker/core/Configurable.html#CUSTOM_NUMBER_FORMATS_KEY_CAMEL_CASE">CUSTOM_NUMBER_FORMATS_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#CUSTOM_NUMBER_FORMATS_KEY_SNAKE_CASE">CUSTOM_NUMBER_FORMATS_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#DATE_FORMAT_KEY">DATE_FORMAT_KEY</a>, <a href="../../freemarker/core/Configurable.html#DATE_FORMAT_KEY_CAMEL_CASE">DATE_FORMAT_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#DATE_FORMAT_KEY_SNAKE_CASE">DATE_FORMAT_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#DATETIME_FORMAT_KEY">DATETIME_FORMAT_KEY</a>, <a href="../../freemarker/core/Configurable.html#DATETIME_FORMAT_KEY_CAMEL_CASE">DATETIME_FORMAT_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#DATETIME_FORMAT_KEY_SNAKE_CASE">DATETIME_FORMAT_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#LAZY_AUTO_IMPORTS_KEY">LAZY_AUTO_IMPORTS_KEY</a>, <a href="../../freemarker/core/Configurable.html#LAZY_AUTO_IMPORTS_KEY_CAMEL_CASE">LAZY_AUTO_IMPORTS_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#LAZY_AUTO_IMPORTS_KEY_SNAKE_CASE">LAZY_AUTO_IMPORTS_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#LAZY_IMPORTS_KEY">LAZY_IMPORTS_KEY</a>, <a href="../../freemarker/core/Configurable.html#LAZY_IMPORTS_KEY_CAMEL_CASE">LAZY_IMPORTS_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#LAZY_IMPORTS_KEY_SNAKE_CASE">LAZY_IMPORTS_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#LOCALE_KEY">LOCALE_KEY</a>, <a href="../../freemarker/core/Configurable.html#LOCALE_KEY_CAMEL_CASE">LOCALE_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#LOCALE_KEY_SNAKE_CASE">LOCALE_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#LOG_TEMPLATE_EXCEPTIONS_KEY">LOG_TEMPLATE_EXCEPTIONS_KEY</a>, <a href="../../freemarker/core/Configurable.html#LOG_TEMPLATE_EXCEPTIONS_KEY_CAMEL_CASE">LOG_TEMPLATE_EXCEPTIONS_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#LOG_TEMPLATE_EXCEPTIONS_KEY_SNAKE_CASE">LOG_TEMPLATE_EXCEPTIONS_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#NEW_BUILTIN_CLASS_RESOLVER_KEY">NEW_BUILTIN_CLASS_RESOLVER_KEY</a>, <a href="../../freemarker/core/Configurable.html#NEW_BUILTIN_CLASS_RESOLVER_KEY_CAMEL_CASE">NEW_BUILTIN_CLASS_RESOLVER_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#NEW_BUILTIN_CLASS_RESOLVER_KEY_SNAKE_CASE">NEW_BUILTIN_CLASS_RESOLVER_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#NUMBER_FORMAT_KEY">NUMBER_FORMAT_KEY</a>, <a href="../../freemarker/core/Configurable.html#NUMBER_FORMAT_KEY_CAMEL_CASE">NUMBER_FORMAT_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#NUMBER_FORMAT_KEY_SNAKE_CASE">NUMBER_FORMAT_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#OBJECT_WRAPPER_KEY">OBJECT_WRAPPER_KEY</a>, <a href="../../freemarker/core/Configurable.html#OBJECT_WRAPPER_KEY_CAMEL_CASE">OBJECT_WRAPPER_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#OBJECT_WRAPPER_KEY_SNAKE_CASE">OBJECT_WRAPPER_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#OUTPUT_ENCODING_KEY">OUTPUT_ENCODING_KEY</a>, <a href="../../freemarker/core/Configurable.html#OUTPUT_ENCODING_KEY_CAMEL_CASE">OUTPUT_ENCODING_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#OUTPUT_ENCODING_KEY_SNAKE_CASE">OUTPUT_ENCODING_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#SHOW_ERROR_TIPS_KEY">SHOW_ERROR_TIPS_KEY</a>, <a href="../../freemarker/core/Configurable.html#SHOW_ERROR_TIPS_KEY_CAMEL_CASE">SHOW_ERROR_TIPS_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#SHOW_ERROR_TIPS_KEY_SNAKE_CASE">SHOW_ERROR_TIPS_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#SQL_DATE_AND_TIME_TIME_ZONE_KEY">SQL_DATE_AND_TIME_TIME_ZONE_KEY</a>, <a href="../../freemarker/core/Configurable.html#SQL_DATE_AND_TIME_TIME_ZONE_KEY_CAMEL_CASE">SQL_DATE_AND_TIME_TIME_ZONE_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#SQL_DATE_AND_TIME_TIME_ZONE_KEY_SNAKE_CASE">SQL_DATE_AND_TIME_TIME_ZONE_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#STRICT_BEAN_MODELS">STRICT_BEAN_MODELS</a>, <a href="../../freemarker/core/Configurable.html#STRICT_BEAN_MODELS_KEY">STRICT_BEAN_MODELS_KEY</a>, <a href="../../freemarker/core/Configurable.html#STRICT_BEAN_MODELS_KEY_CAMEL_CASE">STRICT_BEAN_MODELS_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#STRICT_BEAN_MODELS_KEY_SNAKE_CASE">STRICT_BEAN_MODELS_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#TEMPLATE_EXCEPTION_HANDLER_KEY">TEMPLATE_EXCEPTION_HANDLER_KEY</a>, <a href="../../freemarker/core/Configurable.html#TEMPLATE_EXCEPTION_HANDLER_KEY_CAMEL_CASE">TEMPLATE_EXCEPTION_HANDLER_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#TEMPLATE_EXCEPTION_HANDLER_KEY_SNAKE_CASE">TEMPLATE_EXCEPTION_HANDLER_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#TIME_FORMAT_KEY">TIME_FORMAT_KEY</a>, <a href="../../freemarker/core/Configurable.html#TIME_FORMAT_KEY_CAMEL_CASE">TIME_FORMAT_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#TIME_FORMAT_KEY_SNAKE_CASE">TIME_FORMAT_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#TIME_ZONE_KEY">TIME_ZONE_KEY</a>, <a href="../../freemarker/core/Configurable.html#TIME_ZONE_KEY_CAMEL_CASE">TIME_ZONE_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#TIME_ZONE_KEY_SNAKE_CASE">TIME_ZONE_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#TRUNCATE_BUILTIN_ALGORITHM_KEY">TRUNCATE_BUILTIN_ALGORITHM_KEY</a>, <a href="../../freemarker/core/Configurable.html#TRUNCATE_BUILTIN_ALGORITHM_KEY_CAMEL_CASE">TRUNCATE_BUILTIN_ALGORITHM_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#TRUNCATE_BUILTIN_ALGORITHM_KEY_SNAKE_CASE">TRUNCATE_BUILTIN_ALGORITHM_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#URL_ESCAPING_CHARSET_KEY">URL_ESCAPING_CHARSET_KEY</a>, <a href="../../freemarker/core/Configurable.html#URL_ESCAPING_CHARSET_KEY_CAMEL_CASE">URL_ESCAPING_CHARSET_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#URL_ESCAPING_CHARSET_KEY_SNAKE_CASE">URL_ESCAPING_CHARSET_KEY_SNAKE_CASE</a>, <a href="../../freemarker/core/Configurable.html#WRAP_UNCHECKED_EXCEPTIONS_KEY">WRAP_UNCHECKED_EXCEPTIONS_KEY</a>, <a href="../../freemarker/core/Configurable.html#WRAP_UNCHECKED_EXCEPTIONS_KEY_CAMEL_CASE">WRAP_UNCHECKED_EXCEPTIONS_KEY_CAMEL_CASE</a>, <a href="../../freemarker/core/Configurable.html#WRAP_UNCHECKED_EXCEPTIONS_KEY_SNAKE_CASE">WRAP_UNCHECKED_EXCEPTIONS_KEY_SNAKE_CASE</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#Environment-freemarker.template.Template-freemarker.template.TemplateHashModel-java.io.Writer-">Environment</a></span>(<a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;template,
<a href="../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template">TemplateHashModel</a>&nbsp;rootDataModel,
java.io.Writer&nbsp;out)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#Z:Z__getitem__-java.lang.String-">__getitem__</a></span>(java.lang.String&nbsp;key)</code>
<div class="block">A hook that Jython uses.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#Z:Z__setitem__-java.lang.String-java.lang.Object-">__setitem__</a></span>(java.lang.String&nbsp;key,
java.lang.Object&nbsp;o)</code>
<div class="block">A hook that Jython uses.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#applyEqualsOperator-freemarker.template.TemplateModel-freemarker.template.TemplateModel-">applyEqualsOperator</a></span>(<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;leftValue,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;rightValue)</code>
<div class="block">Compares two <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s according the rules of the FTL "==" operator.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#applyEqualsOperatorLenient-freemarker.template.TemplateModel-freemarker.template.TemplateModel-">applyEqualsOperatorLenient</a></span>(<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;leftValue,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;rightValue)</code>
<div class="block">Compares two <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s according the rules of the FTL "==" operator, except that if the two types
are incompatible, they are treated as non-equal instead of throwing an exception.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#applyGreaterThanOperator-freemarker.template.TemplateModel-freemarker.template.TemplateModel-">applyGreaterThanOperator</a></span>(<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;leftValue,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;rightValue)</code>
<div class="block">Compares two <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s according the rules of the FTL "&gt;" operator.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#applyLessThanOperator-freemarker.template.TemplateModel-freemarker.template.TemplateModel-">applyLessThanOperator</a></span>(<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;leftValue,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;rightValue)</code>
<div class="block">Compares two <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s according the rules of the FTL "&lt;" operator.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#applyLessThanOrEqualsOperator-freemarker.template.TemplateModel-freemarker.template.TemplateModel-">applyLessThanOrEqualsOperator</a></span>(<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;leftValue,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;rightValue)</code>
<div class="block">Compares two <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s according the rules of the FTL "&lt;" operator.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#applyWithGreaterThanOrEqualsOperator-freemarker.template.TemplateModel-freemarker.template.TemplateModel-">applyWithGreaterThanOrEqualsOperator</a></span>(<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;leftValue,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;rightValue)</code>
<div class="block">Compares two <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s according the rules of the FTL "&gt;=" operator.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>java.text.NumberFormat</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getCNumberFormat--">getCNumberFormat</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">Use <a href="../../freemarker/core/Environment.html#getCTemplateNumberFormat--"><code>getCTemplateNumberFormat()</code></a> instead. This method can't return the format used when
<a href="../../freemarker/template/Configuration.html#setIncompatibleImprovements-freemarker.template.Version-">Incompatible Improvements</a> is 2.3.32,
or greater, and instead it will fall back to return the format that was used for 2.3.31. Also, as its described
earlier, this method was inconsistent with <code>?c</code> between Incompatible Improvements 2.3.21 and 2.3.30, while
<a href="../../freemarker/core/Environment.html#getCTemplateNumberFormat--"><code>getCTemplateNumberFormat()</code></a> behaves as <code>?c</code> for all Incompatible Improvements value.</span></div>
</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/template/Configuration.html" title="class in freemarker.template">Configuration</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getConfiguration--">getConfiguration</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core">TemplateNumberFormat</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getCTemplateNumberFormat--">getCTemplateNumberFormat</a></span>()</code>
<div class="block">Returns the <a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core"><code>TemplateNumberFormat</code></a> that <code>?c</code>/<code>?cn</code> uses.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/core/DirectiveCallPlace.html" title="interface in freemarker.core">DirectiveCallPlace</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getCurrentDirectiveCallPlace--">getCurrentDirectiveCallPlace</a></span>()</code>
<div class="block">Gets the currently executing <em>custom</em> directive's call place information, or <code>null</code> if there's no
executing custom directive.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>static <a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getCurrentEnvironment--">getCurrentEnvironment</a></span>()</code>
<div class="block">Retrieves the environment object associated with the current thread, or <code>null</code> if there's no template
processing going on in this thread.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core">Environment.Namespace</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getCurrentNamespace--">getCurrentNamespace</a></span>()</code>
<div class="block">Returns the current namespace.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getCurrentTemplate--">getCurrentTemplate</a></span>()</code>
<div class="block">Returns the <a href="../../freemarker/template/Template.html" title="class in freemarker.template"><code>Template</code></a> that we are "lexically" inside at the moment.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/template/TemplateNodeModel.html" title="interface in freemarker.template">TemplateNodeModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getCurrentVisitorNode--">getCurrentVisitorNode</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getCustomState-java.lang.Object-">getCustomState</a></span>(java.lang.Object&nbsp;identityKey)</code>
<div class="block">Returns the value of a custom state variable, or <code>null</code> if it's missing; see
<a href="../../freemarker/core/Environment.html#setCustomState-java.lang.Object-java.lang.Object-"><code>setCustomState(Object, Object)</code></a> for more.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template">TemplateHashModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getDataModel--">getDataModel</a></span>()</code>
<div class="block">Returns a view of the data-model (also known as the template context in some other template engines)
that falls back to <a href="../../freemarker/template/Configuration.html#setSharedVariable-java.lang.String-freemarker.template.TemplateModel-">shared variables</a>.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code><a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getDataModelOrSharedVariable-java.lang.String-">getDataModelOrSharedVariable</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Returns the variable from the data-model, or if it's not there, then from the
<a href="../../freemarker/template/Configuration.html#setSharedVariables-java.util.Map-">Configuration.setSharedVariables(Map)</a> shared variables}</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getDefaultNS--">getDefaultNS</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code><a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core">Environment.Namespace</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getGlobalNamespace--">getGlobalNamespace</a></span>()</code>
<div class="block">Returns the name-space that contains the globally visible non-data-model variables (usually created with
<code>&amp;lt;#global ...&amp;gt;</code>).</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getGlobalVariable-java.lang.String-">getGlobalVariable</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Returns the globally visible variable of the given name, or <code>null</code>.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code><a href="../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template">TemplateHashModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getGlobalVariables--">getGlobalVariables</a></span>()</code>
<div class="block">Returns the read-only hash of globally visible variables.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>java.util.Set</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getKnownVariableNames--">getKnownVariableNames</a></span>()</code>
<div class="block">Returns a set of variable names that are known at the time of call.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code><a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getLocalVariable-java.lang.String-">getLocalVariable</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Returns the loop or macro local variable corresponding to this variable name.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core">Environment.Namespace</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getMainNamespace--">getMainNamespace</a></span>()</code>
<div class="block">Returns the main namespace.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code><a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getMainTemplate--">getMainTemplate</a></span>()</code>
<div class="block">Returns the topmost <a href="../../freemarker/template/Template.html" title="class in freemarker.template"><code>Template</code></a>, with other words, the one for which this <a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a> was created.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core">Environment.Namespace</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getNamespace-java.lang.String-">getNamespace</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Returns the name-space for the name if exists, or null.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getNamespaceForPrefix-java.lang.String-">getNamespaceForPrefix</a></span>(java.lang.String&nbsp;prefix)</code>&nbsp;</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code>java.io.Writer</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getOut--">getOut</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getPrefixForNamespace-java.lang.String-">getPrefixForNamespace</a></span>(java.lang.String&nbsp;nsURI)</code>&nbsp;</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getTemplate--">getTemplate</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">Use <a href="../../freemarker/core/Environment.html#getMainTemplate--"><code>getMainTemplate()</code></a> instead (or <a href="../../freemarker/core/Environment.html#getCurrentNamespace--"><code>getCurrentNamespace()</code></a> and then
<a href="../../freemarker/core/Environment.Namespace.html#getTemplate--"><code>Environment.Namespace.getTemplate()</code></a>); the value returned by this method is often not what you expect when
it comes to macro/function invocations.</span></div>
</div>
</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code><a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core">TemplateDateFormat</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getTemplateDateFormat-int-java.lang.Class-">getTemplateDateFormat</a></span>(int&nbsp;dateType,
java.lang.Class&lt;? extends java.util.Date&gt;&nbsp;dateClass)</code>
<div class="block">Gets a <a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core"><code>TemplateDateFormat</code></a> using the date/time/datetime format settings and the current locale and time
zone.</div>
</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core">TemplateDateFormat</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getTemplateDateFormat-java.lang.String-int-java.lang.Class-">getTemplateDateFormat</a></span>(java.lang.String&nbsp;formatString,
int&nbsp;dateType,
java.lang.Class&lt;? extends java.util.Date&gt;&nbsp;dateClass)</code>
<div class="block">Gets a <a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core"><code>TemplateDateFormat</code></a> for the specified format string and the current locale and time zone.</div>
</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code><a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core">TemplateDateFormat</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getTemplateDateFormat-java.lang.String-int-java.lang.Class-java.util.Locale-">getTemplateDateFormat</a></span>(java.lang.String&nbsp;formatString,
int&nbsp;dateType,
java.lang.Class&lt;? extends java.util.Date&gt;&nbsp;dateClass,
java.util.Locale&nbsp;locale)</code>
<div class="block">Like <a href="../../freemarker/core/Environment.html#getTemplateDateFormat-java.lang.String-int-java.lang.Class-"><code>getTemplateDateFormat(String, int, Class)</code></a>, but allows you to use a different locale than the
current one.</div>
</td>
</tr>
<tr id="i35" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core">TemplateDateFormat</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getTemplateDateFormat-java.lang.String-int-java.lang.Class-java.util.Locale-java.util.TimeZone-java.util.TimeZone-">getTemplateDateFormat</a></span>(java.lang.String&nbsp;formatString,
int&nbsp;dateType,
java.lang.Class&lt;? extends java.util.Date&gt;&nbsp;dateClass,
java.util.Locale&nbsp;locale,
java.util.TimeZone&nbsp;timeZone,
java.util.TimeZone&nbsp;sqlDateAndTimeTimeZone)</code>
<div class="block">Like <a href="../../freemarker/core/Environment.html#getTemplateDateFormat-java.lang.String-int-java.lang.Class-"><code>getTemplateDateFormat(String, int, Class)</code></a>, but allows you to use a different locale and time zone
than the current one.</div>
</td>
</tr>
<tr id="i36" class="altColor">
<td class="colFirst"><code><a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core">TemplateDateFormat</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getTemplateDateFormat-java.lang.String-int-java.util.Locale-java.util.TimeZone-boolean-">getTemplateDateFormat</a></span>(java.lang.String&nbsp;formatString,
int&nbsp;dateType,
java.util.Locale&nbsp;locale,
java.util.TimeZone&nbsp;timeZone,
boolean&nbsp;zonelessInput)</code>
<div class="block">Gets a <a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core"><code>TemplateDateFormat</code></a> for the specified parameters.</div>
</td>
</tr>
<tr id="i37" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getTemplateForImporting-java.lang.String-">getTemplateForImporting</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Gets a template for importing; used with <a href="../../freemarker/core/Environment.html#importLib-freemarker.template.Template-java.lang.String-"><code>importLib(Template importedTemplate, String namespace)</code></a>.</div>
</td>
</tr>
<tr id="i38" class="altColor">
<td class="colFirst"><code><a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getTemplateForInclusion-java.lang.String-java.lang.String-boolean-">getTemplateForInclusion</a></span>(java.lang.String&nbsp;name,
java.lang.String&nbsp;encoding,
boolean&nbsp;parse)</code>
<div class="block">Same as <a href="../../freemarker/core/Environment.html#getTemplateForInclusion-java.lang.String-java.lang.String-boolean-boolean-"><code>getTemplateForInclusion(String, String, boolean, boolean)</code></a> with <code>false</code>
<code>ignoreMissing</code> argument.</div>
</td>
</tr>
<tr id="i39" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getTemplateForInclusion-java.lang.String-java.lang.String-boolean-boolean-">getTemplateForInclusion</a></span>(java.lang.String&nbsp;name,
java.lang.String&nbsp;encoding,
boolean&nbsp;parseAsFTL,
boolean&nbsp;ignoreMissing)</code>
<div class="block">Gets a template for inclusion; used for implementing <a href="../../freemarker/core/Environment.html#include-freemarker.template.Template-"><code>include(Template includedTemplate)</code></a>.</div>
</td>
</tr>
<tr id="i40" class="altColor">
<td class="colFirst"><code><a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core">TemplateNumberFormat</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getTemplateNumberFormat--">getTemplateNumberFormat</a></span>()</code>
<div class="block">Returns the current number format (<a href="../../freemarker/core/Configurable.html#getNumberFormat--"><code>Configurable.getNumberFormat()</code></a>) as <a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core"><code>TemplateNumberFormat</code></a>.</div>
</td>
</tr>
<tr id="i41" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core">TemplateNumberFormat</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getTemplateNumberFormat-java.lang.String-">getTemplateNumberFormat</a></span>(java.lang.String&nbsp;formatString)</code>
<div class="block">Returns the number format as <a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core"><code>TemplateNumberFormat</code></a> for the given format string and the current locale.</div>
</td>
</tr>
<tr id="i42" class="altColor">
<td class="colFirst"><code><a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core">TemplateNumberFormat</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getTemplateNumberFormat-java.lang.String-java.util.Locale-">getTemplateNumberFormat</a></span>(java.lang.String&nbsp;formatString,
java.util.Locale&nbsp;locale)</code>
<div class="block">Returns the number format as <a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core"><code>TemplateNumberFormat</code></a>, for the given format string and locale.</div>
</td>
</tr>
<tr id="i43" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#getVariable-java.lang.String-">getVariable</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Returns the variable that is visible in this context, or <code>null</code> if the variable is not found.</div>
</td>
</tr>
<tr id="i44" class="altColor">
<td class="colFirst"><code><a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core">Environment.Namespace</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#importLib-java.lang.String-java.lang.String-">importLib</a></span>(java.lang.String&nbsp;templateName,
java.lang.String&nbsp;targetNsVarName)</code>
<div class="block">Emulates <code>import</code> directive, except that <code>templateName</code> must be template root relative.</div>
</td>
</tr>
<tr id="i45" class="rowColor">
<td class="colFirst"><code><a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core">Environment.Namespace</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#importLib-java.lang.String-java.lang.String-boolean-">importLib</a></span>(java.lang.String&nbsp;templateName,
java.lang.String&nbsp;targetNsVarName,
boolean&nbsp;lazy)</code>
<div class="block">Like <a href="../../freemarker/core/Environment.html#importLib-java.lang.String-java.lang.String-"><code>importLib(String, String)</code></a>, but you can specify if you want a
<a href="../../freemarker/core/Configurable.html#setLazyImports-boolean-">lazy import</a> or not.</div>
</td>
</tr>
<tr id="i46" class="altColor">
<td class="colFirst"><code><a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core">Environment.Namespace</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#importLib-freemarker.template.Template-java.lang.String-">importLib</a></span>(<a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;loadedTemplate,
java.lang.String&nbsp;targetNsVarName)</code>
<div class="block">Does what the <code>#import</code> directive does, but with an already loaded template.</div>
</td>
</tr>
<tr id="i47" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#include-java.lang.String-java.lang.String-boolean-">include</a></span>(java.lang.String&nbsp;name,
java.lang.String&nbsp;encoding,
boolean&nbsp;parse)</code>
<div class="block">Emulates <code>include</code> directive, except that <code>name</code> must be template root relative.</div>
</td>
</tr>
<tr id="i48" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#include-freemarker.template.Template-">include</a></span>(<a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;includedTemplate)</code>
<div class="block">Processes a Template in the context of this <code>Environment</code>, including its output in the
<code>Environment</code>'s Writer.</div>
</td>
</tr>
<tr id="i49" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#isInAttemptBlock--">isInAttemptBlock</a></span>()</code>
<div class="block">Tells if we are inside an <tt>#attempt</tt> block (but before <tt>#recover</tt>).</div>
</td>
</tr>
<tr id="i50" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#outputInstructionStack-java.io.PrintWriter-">outputInstructionStack</a></span>(java.io.PrintWriter&nbsp;pw)</code>
<div class="block">Prints the current FTL stack trace.</div>
</td>
</tr>
<tr id="i51" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#process--">process</a></span>()</code>
<div class="block">Processes the template to which this environment belongs to.</div>
</td>
</tr>
<tr id="i52" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#rootBasedToAbsoluteTemplateName-java.lang.String-">rootBasedToAbsoluteTemplateName</a></span>(java.lang.String&nbsp;rootBasedName)</code>
<div class="block">Converts a root based name (a name that's either relative to the root, or is absolute), which are typically used
by the API (such as for <a href="../../freemarker/template/Configuration.html#getTemplate-java.lang.String-"><code>Configuration.getTemplate(String)</code></a>), to an absolute name, which can be safely
passed to <code>&lt;#include path&gt;</code> and such, as it won't be misinterpreted to be relative to the directory of the
template.</div>
</td>
</tr>
<tr id="i53" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setBooleanFormat-java.lang.String-">setBooleanFormat</a></span>(java.lang.String&nbsp;booleanFormat)</code>
<div class="block">The string value for the boolean <code>true</code> and <code>false</code> values, usually intended for human consumption
(not for a computer language), separated with comma.</div>
</td>
</tr>
<tr id="i54" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setCFormat-freemarker.core.CFormat-">setCFormat</a></span>(<a href="../../freemarker/core/CFormat.html" title="class in freemarker.core">CFormat</a>&nbsp;cFormat)</code>
<div class="block">Sets the format (usually a computer language) used for <code>?c</code>, <code>?cn</code>, and for the
<code>"c"</code> (<code>"computer"</code> before 2.3.32) <a href="../../freemarker/core/Configurable.html#setNumberFormat-java.lang.String-"><code>number_format</code></a>, and the
<code>"c"</code> <a href="../../freemarker/core/Configurable.html#setBooleanFormat-java.lang.String-"><code>boolean_format</code></a>.</div>
</td>
</tr>
<tr id="i55" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setCurrentVisitorNode-freemarker.template.TemplateNodeModel-">setCurrentVisitorNode</a></span>(<a href="../../freemarker/template/TemplateNodeModel.html" title="interface in freemarker.template">TemplateNodeModel</a>&nbsp;node)</code>
<div class="block">sets TemplateNodeModel as the current visitor node.</div>
</td>
</tr>
<tr id="i56" class="altColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setCustomState-java.lang.Object-java.lang.Object-">setCustomState</a></span>(java.lang.Object&nbsp;identityKey,
java.lang.Object&nbsp;value)</code>
<div class="block">Sets the value of a custom state variable.</div>
</td>
</tr>
<tr id="i57" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setDateFormat-java.lang.String-">setDateFormat</a></span>(java.lang.String&nbsp;dateFormat)</code>
<div class="block">Sets the format used to convert <code>Date</code>-s that are date-only (no time part) values to string-s,
also the format that <code>someString?date</code> will use to parse strings.</div>
</td>
</tr>
<tr id="i58" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setDateTimeFormat-java.lang.String-">setDateTimeFormat</a></span>(java.lang.String&nbsp;dateTimeFormat)</code>
<div class="block">Sets the format used to convert <code>Date</code>-s that are date-time (timestamp) values to string-s,
also the format that <code>someString?datetime</code> will use to parse strings.</div>
</td>
</tr>
<tr id="i59" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setGlobalVariable-java.lang.String-freemarker.template.TemplateModel-">setGlobalVariable</a></span>(java.lang.String&nbsp;name,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;value)</code>
<div class="block">Sets a variable in the global namespace, like <code>&lt;#global name=value&gt;</code>.</div>
</td>
</tr>
<tr id="i60" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setLocale-java.util.Locale-">setLocale</a></span>(java.util.Locale&nbsp;locale)</code>
<div class="block">Sets the locale used for number and date formatting (among others), also the locale used for searching
localized template variations when no locale was explicitly requested.</div>
</td>
</tr>
<tr id="i61" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setLocalVariable-java.lang.String-freemarker.template.TemplateModel-">setLocalVariable</a></span>(java.lang.String&nbsp;name,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;value)</code>
<div class="block">Sets a local variable that's on the top-level inside a macro or function invocation, like
<code>&lt;#local name=value&gt;</code>.</div>
</td>
</tr>
<tr id="i62" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setNumberFormat-java.lang.String-">setNumberFormat</a></span>(java.lang.String&nbsp;formatName)</code>
<div class="block">Sets the number format used to convert numbers to strings.</div>
</td>
</tr>
<tr id="i63" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setOut-java.io.Writer-">setOut</a></span>(java.io.Writer&nbsp;out)</code>&nbsp;</td>
</tr>
<tr id="i64" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setOutputEncoding-java.lang.String-">setOutputEncoding</a></span>(java.lang.String&nbsp;outputEncoding)</code>
<div class="block">Informs FreeMarker about the charset used for the output.</div>
</td>
</tr>
<tr id="i65" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setSQLDateAndTimeTimeZone-java.util.TimeZone-">setSQLDateAndTimeTimeZone</a></span>(java.util.TimeZone&nbsp;timeZone)</code>
<div class="block">Sets the time zone used when dealing with <code>java.sql.Date</code> and
<code>java.sql.Time</code> values.</div>
</td>
</tr>
<tr id="i66" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setTemplateExceptionHandler-freemarker.template.TemplateExceptionHandler-">setTemplateExceptionHandler</a></span>(<a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template">TemplateExceptionHandler</a>&nbsp;templateExceptionHandler)</code>
<div class="block">Sets the exception handler used to handle exceptions occurring inside templates.</div>
</td>
</tr>
<tr id="i67" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setTimeFormat-java.lang.String-">setTimeFormat</a></span>(java.lang.String&nbsp;timeFormat)</code>
<div class="block">Sets the format used to convert <code>Date</code>-s that are time (no date part) values to string-s, also
the format that <code>someString?time</code> will use to parse strings.</div>
</td>
</tr>
<tr id="i68" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setTimeZone-java.util.TimeZone-">setTimeZone</a></span>(java.util.TimeZone&nbsp;timeZone)</code>
<div class="block">Sets the time zone to use when formatting date/time values.</div>
</td>
</tr>
<tr id="i69" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setURLEscapingCharset-java.lang.String-">setURLEscapingCharset</a></span>(java.lang.String&nbsp;urlEscapingCharset)</code>
<div class="block">Sets the URL escaping (URL encoding, percentage encoding) charset.</div>
</td>
</tr>
<tr id="i70" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#setVariable-java.lang.String-freemarker.template.TemplateModel-">setVariable</a></span>(java.lang.String&nbsp;name,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;value)</code>
<div class="block">Sets a variable in the current namespace, like <code>&lt;#assign name=value&gt;</code>.</div>
</td>
</tr>
<tr id="i71" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#toFullTemplateName-java.lang.String-java.lang.String-">toFullTemplateName</a></span>(java.lang.String&nbsp;baseName,
java.lang.String&nbsp;targetName)</code>
<div class="block">Resolves a reference to a template (like the one used in <code>#include</code> or <code>#import</code>), assuming a base
name.</div>
</td>
</tr>
<tr id="i72" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/core/Environment.html#visit-freemarker.core.TemplateElement-freemarker.template.TemplateDirectiveModel-java.util.Map-java.util.List-">visit</a></span>(freemarker.core.TemplateElement&nbsp;element,
<a href="../../freemarker/template/TemplateDirectiveModel.html" title="interface in freemarker.template">TemplateDirectiveModel</a>&nbsp;directiveModel,
java.util.Map&nbsp;args,
java.util.List&nbsp;bodyParameterNames)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">Should be internal API</span></div>
</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.freemarker.core.Configurable">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;freemarker.core.<a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></h3>
<code><a href="../../freemarker/core/Configurable.html#addAutoImport-java.lang.String-java.lang.String-">addAutoImport</a>, <a href="../../freemarker/core/Configurable.html#addAutoInclude-java.lang.String-">addAutoInclude</a>, <a href="../../freemarker/core/Configurable.html#clone--">clone</a>, <a href="../../freemarker/core/Configurable.html#doAutoImportsAndIncludes-freemarker.core.Environment-">doAutoImportsAndIncludes</a>, <a href="../../freemarker/core/Configurable.html#getArithmeticEngine--">getArithmeticEngine</a>, <a href="../../freemarker/core/Configurable.html#getAttemptExceptionReporter--">getAttemptExceptionReporter</a>, <a href="../../freemarker/core/Configurable.html#getAutoFlush--">getAutoFlush</a>, <a href="../../freemarker/core/Configurable.html#getAutoImports--">getAutoImports</a>, <a href="../../freemarker/core/Configurable.html#getAutoImportsWithoutFallback--">getAutoImportsWithoutFallback</a>, <a href="../../freemarker/core/Configurable.html#getAutoIncludes--">getAutoIncludes</a>, <a href="../../freemarker/core/Configurable.html#getAutoIncludesWithoutFallback--">getAutoIncludesWithoutFallback</a>, <a href="../../freemarker/core/Configurable.html#getBooleanFormat--">getBooleanFormat</a>, <a href="../../freemarker/core/Configurable.html#getCFormat--">getCFormat</a>, <a href="../../freemarker/core/Configurable.html#getClassicCompatibleAsInt--">getClassicCompatibleAsInt</a>, <a href="../../freemarker/core/Configurable.html#getCorrectedNameForUnknownSetting-java.lang.String-">getCorrectedNameForUnknownSetting</a>, <a href="../../freemarker/core/Configurable.html#getCustomAttribute-java.lang.String-">getCustomAttribute</a>, <a href="../../freemarker/core/Configurable.html#getCustomAttributeNames--">getCustomAttributeNames</a>, <a href="../../freemarker/core/Configurable.html#getCustomDateFormat-java.lang.String-">getCustomDateFormat</a>, <a href="../../freemarker/core/Configurable.html#getCustomDateFormats--">getCustomDateFormats</a>, <a href="../../freemarker/core/Configurable.html#getCustomDateFormatsWithoutFallback--">getCustomDateFormatsWithoutFallback</a>, <a href="../../freemarker/core/Configurable.html#getCustomNumberFormat-java.lang.String-">getCustomNumberFormat</a>, <a href="../../freemarker/core/Configurable.html#getCustomNumberFormats--">getCustomNumberFormats</a>, <a href="../../freemarker/core/Configurable.html#getCustomNumberFormatsWithoutFallback--">getCustomNumberFormatsWithoutFallback</a>, <a href="../../freemarker/core/Configurable.html#getDateFormat--">getDateFormat</a>, <a href="../../freemarker/core/Configurable.html#getDateTimeFormat--">getDateTimeFormat</a>, <a href="../../freemarker/core/Configurable.html#getEnvironment--">getEnvironment</a>, <a href="../../freemarker/core/Configurable.html#getLazyAutoImports--">getLazyAutoImports</a>, <a href="../../freemarker/core/Configurable.html#getLazyImports--">getLazyImports</a>, <a href="../../freemarker/core/Configurable.html#getLocale--">getLocale</a>, <a href="../../freemarker/core/Configurable.html#getLogTemplateExceptions--">getLogTemplateExceptions</a>, <a href="../../freemarker/core/Configurable.html#getNewBuiltinClassResolver--">getNewBuiltinClassResolver</a>, <a href="../../freemarker/core/Configurable.html#getNumberFormat--">getNumberFormat</a>, <a href="../../freemarker/core/Configurable.html#getObjectWrapper--">getObjectWrapper</a>, <a href="../../freemarker/core/Configurable.html#getOutputEncoding--">getOutputEncoding</a>, <a href="../../freemarker/core/Configurable.html#getParent--">getParent</a>, <a href="../../freemarker/core/Configurable.html#getSetting-java.lang.String-">getSetting</a>, <a href="../../freemarker/core/Configurable.html#getSettingNames-boolean-">getSettingNames</a>, <a href="../../freemarker/core/Configurable.html#getSettings--">getSettings</a>, <a href="../../freemarker/core/Configurable.html#getShowErrorTips--">getShowErrorTips</a>, <a href="../../freemarker/core/Configurable.html#getSQLDateAndTimeTimeZone--">getSQLDateAndTimeTimeZone</a>, <a href="../../freemarker/core/Configurable.html#getTemplateExceptionHandler--">getTemplateExceptionHandler</a>, <a href="../../freemarker/core/Configurable.html#getTimeFormat--">getTimeFormat</a>, <a href="../../freemarker/core/Configurable.html#getTimeZone--">getTimeZone</a>, <a href="../../freemarker/core/Configurable.html#getTruncateBuiltinAlgorithm--">getTruncateBuiltinAlgorithm</a>, <a href="../../freemarker/core/Configurable.html#getURLEscapingCharset--">getURLEscapingCharset</a>, <a href="../../freemarker/core/Configurable.html#getWrapUncheckedExceptions--">getWrapUncheckedExceptions</a>, <a href="../../freemarker/core/Configurable.html#hasCustomFormats--">hasCustomFormats</a>, <a href="../../freemarker/core/Configurable.html#invalidSettingValueException-java.lang.String-java.lang.String-">invalidSettingValueException</a>, <a href="../../freemarker/core/Configurable.html#isAPIBuiltinEnabled--">isAPIBuiltinEnabled</a>, <a href="../../freemarker/core/Configurable.html#isAPIBuiltinEnabledSet--">isAPIBuiltinEnabledSet</a>, <a href="../../freemarker/core/Configurable.html#isArithmeticEngineSet--">isArithmeticEngineSet</a>, <a href="../../freemarker/core/Configurable.html#isAttemptExceptionReporterSet--">isAttemptExceptionReporterSet</a>, <a href="../../freemarker/core/Configurable.html#isAutoFlushSet--">isAutoFlushSet</a>, <a href="../../freemarker/core/Configurable.html#isAutoImportsSet--">isAutoImportsSet</a>, <a href="../../freemarker/core/Configurable.html#isAutoIncludesSet--">isAutoIncludesSet</a>, <a href="../../freemarker/core/Configurable.html#isBooleanFormatSet--">isBooleanFormatSet</a>, <a href="../../freemarker/core/Configurable.html#isCFormatSet--">isCFormatSet</a>, <a href="../../freemarker/core/Configurable.html#isClassicCompatible--">isClassicCompatible</a>, <a href="../../freemarker/core/Configurable.html#isClassicCompatibleSet--">isClassicCompatibleSet</a>, <a href="../../freemarker/core/Configurable.html#isCustomDateFormatsSet--">isCustomDateFormatsSet</a>, <a href="../../freemarker/core/Configurable.html#isCustomNumberFormatsSet--">isCustomNumberFormatsSet</a>, <a href="../../freemarker/core/Configurable.html#isDateFormatSet--">isDateFormatSet</a>, <a href="../../freemarker/core/Configurable.html#isDateTimeFormatSet--">isDateTimeFormatSet</a>, <a href="../../freemarker/core/Configurable.html#isLazyAutoImportsSet--">isLazyAutoImportsSet</a>, <a href="../../freemarker/core/Configurable.html#isLazyImportsSet--">isLazyImportsSet</a>, <a href="../../freemarker/core/Configurable.html#isLocaleSet--">isLocaleSet</a>, <a href="../../freemarker/core/Configurable.html#isLogTemplateExceptionsSet--">isLogTemplateExceptionsSet</a>, <a href="../../freemarker/core/Configurable.html#isNewBuiltinClassResolverSet--">isNewBuiltinClassResolverSet</a>, <a href="../../freemarker/core/Configurable.html#isNumberFormatSet--">isNumberFormatSet</a>, <a href="../../freemarker/core/Configurable.html#isObjectWrapperSet--">isObjectWrapperSet</a>, <a href="../../freemarker/core/Configurable.html#isOutputEncodingSet--">isOutputEncodingSet</a>, <a href="../../freemarker/core/Configurable.html#isShowErrorTipsSet--">isShowErrorTipsSet</a>, <a href="../../freemarker/core/Configurable.html#isSQLDateAndTimeTimeZoneSet--">isSQLDateAndTimeTimeZoneSet</a>, <a href="../../freemarker/core/Configurable.html#isTemplateExceptionHandlerSet--">isTemplateExceptionHandlerSet</a>, <a href="../../freemarker/core/Configurable.html#isTimeFormatSet--">isTimeFormatSet</a>, <a href="../../freemarker/core/Configurable.html#isTimeZoneSet--">isTimeZoneSet</a>, <a href="../../freemarker/core/Configurable.html#isTruncateBuiltinAlgorithmSet--">isTruncateBuiltinAlgorithmSet</a>, <a href="../../freemarker/core/Configurable.html#isURLEscapingCharsetSet--">isURLEscapingCharsetSet</a>, <a href="../../freemarker/core/Configurable.html#isWrapUncheckedExceptionsSet--">isWrapUncheckedExceptionsSet</a>, <a href="../../freemarker/core/Configurable.html#parseAsImportList-java.lang.String-">parseAsImportList</a>, <a href="../../freemarker/core/Configurable.html#parseAsList-java.lang.String-">parseAsList</a>, <a href="../../freemarker/core/Configurable.html#parseAsSegmentedList-java.lang.String-">parseAsSegmentedList</a>, <a href="../../freemarker/core/Configurable.html#removeAutoImport-java.lang.String-">removeAutoImport</a>, <a href="../../freemarker/core/Configurable.html#removeAutoInclude-java.lang.String-">removeAutoInclude</a>, <a href="../../freemarker/core/Configurable.html#removeCustomAttribute-java.lang.String-">removeCustomAttribute</a>, <a href="../../freemarker/core/Configurable.html#setAPIBuiltinEnabled-boolean-">setAPIBuiltinEnabled</a>, <a href="../../freemarker/core/Configurable.html#setArithmeticEngine-freemarker.core.ArithmeticEngine-">setArithmeticEngine</a>, <a href="../../freemarker/core/Configurable.html#setAttemptExceptionReporter-freemarker.template.AttemptExceptionReporter-">setAttemptExceptionReporter</a>, <a href="../../freemarker/core/Configurable.html#setAutoFlush-boolean-">setAutoFlush</a>, <a href="../../freemarker/core/Configurable.html#setAutoImports-java.util.Map-">setAutoImports</a>, <a href="../../freemarker/core/Configurable.html#setAutoIncludes-java.util.List-">setAutoIncludes</a>, <a href="../../freemarker/core/Configurable.html#setClassicCompatible-boolean-">setClassicCompatible</a>, <a href="../../freemarker/core/Configurable.html#setClassicCompatibleAsInt-int-">setClassicCompatibleAsInt</a>, <a href="../../freemarker/core/Configurable.html#setCustomAttribute-java.lang.String-java.lang.Object-">setCustomAttribute</a>, <a href="../../freemarker/core/Configurable.html#setCustomDateFormats-java.util.Map-">setCustomDateFormats</a>, <a href="../../freemarker/core/Configurable.html#setCustomNumberFormats-java.util.Map-">setCustomNumberFormats</a>, <a href="../../freemarker/core/Configurable.html#setLazyAutoImports-java.lang.Boolean-">setLazyAutoImports</a>, <a href="../../freemarker/core/Configurable.html#setLazyImports-boolean-">setLazyImports</a>, <a href="../../freemarker/core/Configurable.html#setLogTemplateExceptions-boolean-">setLogTemplateExceptions</a>, <a href="../../freemarker/core/Configurable.html#setNewBuiltinClassResolver-freemarker.core.TemplateClassResolver-">setNewBuiltinClassResolver</a>, <a href="../../freemarker/core/Configurable.html#setObjectWrapper-freemarker.template.ObjectWrapper-">setObjectWrapper</a>, <a href="../../freemarker/core/Configurable.html#setSetting-java.lang.String-java.lang.String-">setSetting</a>, <a href="../../freemarker/core/Configurable.html#setSettings-java.io.InputStream-">setSettings</a>, <a href="../../freemarker/core/Configurable.html#setSettings-java.util.Properties-">setSettings</a>, <a href="../../freemarker/core/Configurable.html#setShowErrorTips-boolean-">setShowErrorTips</a>, <a href="../../freemarker/core/Configurable.html#setStrictBeanModels-boolean-">setStrictBeanModels</a>, <a href="../../freemarker/core/Configurable.html#settingValueAssignmentException-java.lang.String-java.lang.String-java.lang.Throwable-">settingValueAssignmentException</a>, <a href="../../freemarker/core/Configurable.html#setTruncateBuiltinAlgorithm-freemarker.core.TruncateBuiltinAlgorithm-">setTruncateBuiltinAlgorithm</a>, <a href="../../freemarker/core/Configurable.html#setWrapUncheckedExceptions-boolean-">setWrapUncheckedExceptions</a>, <a href="../../freemarker/core/Configurable.html#unknownSettingException-java.lang.String-">unknownSettingException</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="Environment-freemarker.template.Template-freemarker.template.TemplateHashModel-java.io.Writer-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>Environment</h4>
<pre>public&nbsp;Environment(<a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;template,
<a href="../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template">TemplateHashModel</a>&nbsp;rootDataModel,
java.io.Writer&nbsp;out)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getCurrentEnvironment--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentEnvironment</h4>
<pre>public static&nbsp;<a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;getCurrentEnvironment()</pre>
<div class="block">Retrieves the environment object associated with the current thread, or <code>null</code> if there's no template
processing going on in this 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.</div>
</li>
</ul>
<a name="getTemplate--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTemplate</h4>
<pre>@Deprecated
public&nbsp;<a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;getTemplate()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Use <a href="../../freemarker/core/Environment.html#getMainTemplate--"><code>getMainTemplate()</code></a> instead (or <a href="../../freemarker/core/Environment.html#getCurrentNamespace--"><code>getCurrentNamespace()</code></a> and then
<a href="../../freemarker/core/Environment.Namespace.html#getTemplate--"><code>Environment.Namespace.getTemplate()</code></a>); the value returned by this method is often not what you expect when
it comes to macro/function invocations.</span></div>
<div class="block">Despite its name it just returns <a href="../../freemarker/core/Configurable.html#getParent--"><code>Configurable.getParent()</code></a>. If <a href="../../freemarker/template/Configuration.html#getIncompatibleImprovements--"><code>Configuration.getIncompatibleImprovements()</code></a> is
at least 2.3.22, then that will be the same as <a href="../../freemarker/core/Environment.html#getMainTemplate--"><code>getMainTemplate()</code></a>. Otherwise the returned value follows
the <a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a> parent switchings that occur at <code>#include</code>/<code>#import</code> and <code>#nested</code>
directive calls, that is, it's not very meaningful outside FreeMarker internals.</div>
</li>
</ul>
<a name="getMainTemplate--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMainTemplate</h4>
<pre>public&nbsp;<a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;getMainTemplate()</pre>
<div class="block">Returns the topmost <a href="../../freemarker/template/Template.html" title="class in freemarker.template"><code>Template</code></a>, with other words, the one for which this <a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a> was created.
That template will never change, like <code>#include</code> or macro calls don't change it. This method never returns
<code>null</code>.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../freemarker/core/Environment.html#getCurrentNamespace--"><code>getCurrentNamespace()</code></a></dd>
</dl>
</li>
</ul>
<a name="getCurrentTemplate--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentTemplate</h4>
<pre>public&nbsp;<a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;getCurrentTemplate()</pre>
<div class="block">Returns the <a href="../../freemarker/template/Template.html" title="class in freemarker.template"><code>Template</code></a> that we are "lexically" inside at the moment. This template will change when
entering an <code>#include</code> or calling a macro or function in another template, or returning to yet another
template with <code>#nested</code>. When you are calling a directive that's implemented in Java or a Java method
from a template, the current template will be the last current template, not <code>null</code>. This method never
returns <code>null</code>.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.23</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../freemarker/core/Environment.html#getMainTemplate--"><code>getMainTemplate()</code></a>,
<a href="../../freemarker/core/Environment.html#getCurrentNamespace--"><code>getCurrentNamespace()</code></a></dd>
</dl>
</li>
</ul>
<a name="getCurrentDirectiveCallPlace--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentDirectiveCallPlace</h4>
<pre>public&nbsp;<a href="../../freemarker/core/DirectiveCallPlace.html" title="interface in freemarker.core">DirectiveCallPlace</a>&nbsp;getCurrentDirectiveCallPlace()</pre>
<div class="block">Gets the currently executing <em>custom</em> directive's call place information, or <code>null</code> if there's no
executing custom directive. This currently only works for calls made from templates with the <code>&lt;@...&gt;</code>
syntax. This should only be called from the <a href="../../freemarker/template/TemplateDirectiveModel.html" title="interface in freemarker.template"><code>TemplateDirectiveModel</code></a> that was invoked with <code>&lt;@...&gt;</code>,
otherwise its return value is not defined by this API (it's usually <code>null</code>).</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
</dl>
</li>
</ul>
<a name="process--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>process</h4>
<pre>public&nbsp;void&nbsp;process()
throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a>,
java.io.IOException</pre>
<div class="block">Processes the template to which this environment belongs to.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a name="visit-freemarker.core.TemplateElement-freemarker.template.TemplateDirectiveModel-java.util.Map-java.util.List-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>visit</h4>
<pre>@Deprecated
public&nbsp;void&nbsp;visit(freemarker.core.TemplateElement&nbsp;element,
<a href="../../freemarker/template/TemplateDirectiveModel.html" title="interface in freemarker.template">TemplateDirectiveModel</a>&nbsp;directiveModel,
java.util.Map&nbsp;args,
java.util.List&nbsp;bodyParameterNames)
throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a>,
java.io.IOException</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Should be internal API</span></div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a name="isInAttemptBlock--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isInAttemptBlock</h4>
<pre>public&nbsp;boolean&nbsp;isInAttemptBlock()</pre>
<div class="block">Tells if we are inside an <tt>#attempt</tt> block (but before <tt>#recover</tt>). This can be useful for
<a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template"><code>TemplateExceptionHandler</code></a>-s, as then they may don't want to print the error to the output, as
<tt>#attempt</tt> will roll it back anyway.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.20</dd>
</dl>
</li>
</ul>
<a name="setTemplateExceptionHandler-freemarker.template.TemplateExceptionHandler-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setTemplateExceptionHandler</h4>
<pre>public&nbsp;void&nbsp;setTemplateExceptionHandler(<a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template">TemplateExceptionHandler</a>&nbsp;templateExceptionHandler)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/Configurable.html#setTemplateExceptionHandler-freemarker.template.TemplateExceptionHandler-">Configurable</a></code></span></div>
<div class="block">Sets the exception handler used to handle exceptions occurring inside templates.
The default is <a href="../../freemarker/template/TemplateExceptionHandler.html#DEBUG_HANDLER"><code>TemplateExceptionHandler.DEBUG_HANDLER</code></a>. The recommended values are:
<ul>
<li>In production systems: <a href="../../freemarker/template/TemplateExceptionHandler.html#RETHROW_HANDLER"><code>TemplateExceptionHandler.RETHROW_HANDLER</code></a>
<li>During development of HTML templates: <a href="../../freemarker/template/TemplateExceptionHandler.html#HTML_DEBUG_HANDLER"><code>TemplateExceptionHandler.HTML_DEBUG_HANDLER</code></a>
<li>During development of non-HTML templates: <a href="../../freemarker/template/TemplateExceptionHandler.html#DEBUG_HANDLER"><code>TemplateExceptionHandler.DEBUG_HANDLER</code></a>
</ul>
<p>All of these will let the exception propagate further, so that you can catch it around
<a href="../../freemarker/template/Template.html#process-java.lang.Object-java.io.Writer-"><code>Template.process(Object, Writer)</code></a> for example. The difference is in what they print on the output before
they do that.
<p>Note that the <a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template"><code>TemplateExceptionHandler</code></a> is not meant to be used for generating HTTP error pages.
Neither is it meant to be used to roll back the printed output. These should be solved outside template
processing when the exception raises from <a href="../../freemarker/template/Template.html#process-java.lang.Object-java.io.Writer-"><code>Template.process</code></a>.
<a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template"><code>TemplateExceptionHandler</code></a> meant to be used if you want to include special content <em>in</em> the template
output, or if you want to suppress certain exceptions. If you suppress an exception, and the
<a href="../../freemarker/core/Configurable.html#getLogTemplateExceptions--"><code>Configurable.getLogTemplateExceptions()</code></a> returns <code>false</code>, then it's the responsibility of the
<a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template"><code>TemplateExceptionHandler</code></a> to log the exception (if you want it to be logged).</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../freemarker/core/Configurable.html#setTemplateExceptionHandler-freemarker.template.TemplateExceptionHandler-">setTemplateExceptionHandler</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></code></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../freemarker/core/Configurable.html#setLogTemplateExceptions-boolean-"><code>Configurable.setLogTemplateExceptions(boolean)</code></a>,
<a href="../../freemarker/core/Configurable.html#setAttemptExceptionReporter-freemarker.template.AttemptExceptionReporter-"><code>Configurable.setAttemptExceptionReporter(AttemptExceptionReporter)</code></a></dd>
</dl>
</li>
</ul>
<a name="setLocale-java.util.Locale-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setLocale</h4>
<pre>public&nbsp;void&nbsp;setLocale(java.util.Locale&nbsp;locale)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/Configurable.html#setLocale-java.util.Locale-">Configurable</a></code></span></div>
<div class="block">Sets the locale used for number and date formatting (among others), also the locale used for searching
localized template variations when no locale was explicitly requested. On the <a href="../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> level it
defaults to the default locale of system (of the JVM), for server-side application usually you should set it
explicitly in the <a href="../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> to use the preferred locale of your application instead.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../freemarker/core/Configurable.html#setLocale-java.util.Locale-">setLocale</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></code></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../freemarker/template/Configuration.html#getTemplate-java.lang.String-java.util.Locale-"><code>Configuration.getTemplate(String, Locale)</code></a></dd>
</dl>
</li>
</ul>
<a name="setTimeZone-java.util.TimeZone-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setTimeZone</h4>
<pre>public&nbsp;void&nbsp;setTimeZone(java.util.TimeZone&nbsp;timeZone)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/Configurable.html#setTimeZone-java.util.TimeZone-">Configurable</a></code></span></div>
<div class="block">Sets the time zone to use when formatting date/time values.
Defaults to the system time zone (<code>TimeZone.getDefault()</code>), regardless of the "locale" FreeMarker setting,
so in a server application you probably want to set it explicitly in the <a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a> to match the
preferred time zone of target audience (like the Web page visitor).
<p>If you or the templates set the time zone, you should probably also set
<a href="../../freemarker/core/Configurable.html#setSQLDateAndTimeTimeZone-java.util.TimeZone-"><code>Configurable.setSQLDateAndTimeTimeZone(TimeZone)</code></a>!</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../freemarker/core/Configurable.html#setTimeZone-java.util.TimeZone-">setTimeZone</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></code></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../freemarker/core/Configurable.html#setSQLDateAndTimeTimeZone-java.util.TimeZone-"><code>Configurable.setSQLDateAndTimeTimeZone(TimeZone)</code></a></dd>
</dl>
</li>
</ul>
<a name="setSQLDateAndTimeTimeZone-java.util.TimeZone-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setSQLDateAndTimeTimeZone</h4>
<pre>public&nbsp;void&nbsp;setSQLDateAndTimeTimeZone(java.util.TimeZone&nbsp;timeZone)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/Configurable.html#setSQLDateAndTimeTimeZone-java.util.TimeZone-">Configurable</a></code></span></div>
<div class="block">Sets the time zone used when dealing with <code>java.sql.Date</code> and
<code>java.sql.Time</code> values. It defaults to <code>null</code> for backward compatibility, but in most
applications this should be set to the JVM default time zone (server default time zone), because that's what
most JDBC drivers will use when constructing the <code>java.sql.Date</code> and
<code>java.sql.Time</code> values. If this setting is <code>null</code>, FreeMarker will use the value of
(<a href="../../freemarker/core/Configurable.html#getTimeZone--"><code>Configurable.getTimeZone()</code></a>) for <code>java.sql.Date</code> and <code>java.sql.Time</code> values,
which often gives bad results.
<p>This setting doesn't influence the formatting of other kind of values (like of
<code>java.sql.Timestamp</code> or plain <code>java.util.Date</code> values).
<p>To decide what value you need, a few things has to be understood:
<ul>
<li>Date-only and time-only values in SQL-oriented databases usually store calendar and clock field
values directly (year, month, day, or hour, minute, seconds (with decimals)), as opposed to a set of points
on the physical time line. Thus, unlike SQL timestamps, these values usually aren't meant to be shown
differently depending on the time zone of the audience.
<li>When a JDBC query has to return a date-only or time-only value, it has to convert it to a point on the
physical time line, because that's what <code>Date</code> and its subclasses store (milliseconds since
the epoch). Obviously, this is impossible to do. So JDBC just chooses a physical time which, when rendered
<em>with the JVM default time zone</em>, will give the same field values as those stored
in the database. (Actually, you can give JDBC a calendar, and so it can use other time zones too, but most
application won't care using those overloads.) For example, assume that the system time zone is GMT+02:00.
Then, 2014-07-12 in the database will be translated to physical time 2014-07-11 22:00:00 UTC, because that
rendered in GMT+02:00 gives 2014-07-12 00:00:00. Similarly, 11:57:00 in the database will be translated to
physical time 1970-01-01 09:57:00 UTC. Thus, the physical time stored in the returned value depends on the
default system time zone of the JDBC client, not just on the content of the database. (This used to be the
default behavior of ORM-s, like Hibernate, too.)
<li>The value of the <code>time_zone</code> FreeMarker configuration setting sets the time zone used for the
template output. For example, when a web page visitor has a preferred time zone, the web application framework
may calls <a href="../../freemarker/core/Environment.html#setTimeZone-java.util.TimeZone-"><code>setTimeZone(TimeZone)</code></a> with that time zone. Thus, the visitor will
see <code>java.sql.Timestamp</code> and plain <code>java.util.Date</code> values as
they look in his own time zone. While
this is desirable for those types, as they meant to represent physical points on the time line, this is not
necessarily desirable for date-only and time-only values. When <code>sql_date_and_time_time_zone</code> is
<code>null</code>, <code>time_zone</code> is used for rendering all kind of date/time/dateTime values, including
<code>java.sql.Date</code> and <code>java.sql.Time</code>, and then if, for example,
<code>time_zone</code> is GMT+00:00, the
values from the earlier examples will be shown as 2014-07-11 (one day off) and 09:57:00 (2 hours off). While
those are the time zone correct renderings, those values are probably meant to be shown "as is".
<li>You may wonder why this setting isn't simply "SQL time zone", that is, why's this time zone not applied to
<code>java.sql.Timestamp</code> values as well. Timestamps in databases refer to a point on
the physical time line, and thus doesn't have the inherent problem of date-only and time-only values.
FreeMarker assumes that the JDBC driver converts time stamps coming from the database so that they store
the distance from the epoch (1970-01-01 00:00:00 UTC), as requested by the <code>Date</code> API.
Then time stamps can be safely rendered in different time zones, and thus need no special treatment.
</ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../freemarker/core/Configurable.html#setSQLDateAndTimeTimeZone-java.util.TimeZone-">setSQLDateAndTimeTimeZone</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>timeZone</code> - Maybe <code>null</code>, in which case <code>java.sql.Date</code> and
<code>java.sql.Time</code> values will be formatted in the time zone returned by
<a href="../../freemarker/core/Configurable.html#getTimeZone--"><code>Configurable.getTimeZone()</code></a>.
(Note that since <code>null</code> is an allowed value for this setting, it will not cause
<a href="../../freemarker/core/Configurable.html#getSQLDateAndTimeTimeZone--"><code>Configurable.getSQLDateAndTimeTimeZone()</code></a> to fall back to the parent configuration.)</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../freemarker/core/Configurable.html#setTimeZone-java.util.TimeZone-"><code>Configurable.setTimeZone(TimeZone)</code></a></dd>
</dl>
</li>
</ul>
<a name="setURLEscapingCharset-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setURLEscapingCharset</h4>
<pre>public&nbsp;void&nbsp;setURLEscapingCharset(java.lang.String&nbsp;urlEscapingCharset)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/Configurable.html#setURLEscapingCharset-java.lang.String-">Configurable</a></code></span></div>
<div class="block">Sets the URL escaping (URL encoding, percentage encoding) charset. If <code>null</code>, the output encoding
(<a href="../../freemarker/core/Configurable.html#setOutputEncoding-java.lang.String-"><code>Configurable.setOutputEncoding(String)</code></a>) will be used for URL escaping.
Defaults to <code>null</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../freemarker/core/Configurable.html#setURLEscapingCharset-java.lang.String-">setURLEscapingCharset</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></code></dd>
</dl>
</li>
</ul>
<a name="setOutputEncoding-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setOutputEncoding</h4>
<pre>public&nbsp;void&nbsp;setOutputEncoding(java.lang.String&nbsp;outputEncoding)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/Configurable.html#setOutputEncoding-java.lang.String-">Configurable</a></code></span></div>
<div class="block">Informs FreeMarker about the charset used for the output. As FreeMarker outputs character stream (not
byte stream), it's not aware of the output charset unless the software that encloses it tells it
with this setting. Some templates may use FreeMarker features that require this information.
Setting this to <code>null</code> means that the output encoding is not known.
<p>Defaults to <code>null</code> (unknown).</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../freemarker/core/Configurable.html#setOutputEncoding-java.lang.String-">setOutputEncoding</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></code></dd>
</dl>
</li>
</ul>
<a name="applyEqualsOperator-freemarker.template.TemplateModel-freemarker.template.TemplateModel-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>applyEqualsOperator</h4>
<pre>public&nbsp;boolean&nbsp;applyEqualsOperator(<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;leftValue,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;rightValue)
throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
<div class="block">Compares two <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s according the rules of the FTL "==" operator.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.20</dd>
</dl>
</li>
</ul>
<a name="applyEqualsOperatorLenient-freemarker.template.TemplateModel-freemarker.template.TemplateModel-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>applyEqualsOperatorLenient</h4>
<pre>public&nbsp;boolean&nbsp;applyEqualsOperatorLenient(<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;leftValue,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;rightValue)
throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
<div class="block">Compares two <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s according the rules of the FTL "==" operator, except that if the two types
are incompatible, they are treated as non-equal instead of throwing an exception. Comparing dates of different
types (date-only VS time-only VS date-time) will still throw an exception, however.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.20</dd>
</dl>
</li>
</ul>
<a name="applyLessThanOperator-freemarker.template.TemplateModel-freemarker.template.TemplateModel-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>applyLessThanOperator</h4>
<pre>public&nbsp;boolean&nbsp;applyLessThanOperator(<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;leftValue,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;rightValue)
throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
<div class="block">Compares two <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s according the rules of the FTL "&lt;" operator.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.20</dd>
</dl>
</li>
</ul>
<a name="applyLessThanOrEqualsOperator-freemarker.template.TemplateModel-freemarker.template.TemplateModel-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>applyLessThanOrEqualsOperator</h4>
<pre>public&nbsp;boolean&nbsp;applyLessThanOrEqualsOperator(<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;leftValue,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;rightValue)
throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
<div class="block">Compares two <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s according the rules of the FTL "&lt;" operator.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.20</dd>
</dl>
</li>
</ul>
<a name="applyGreaterThanOperator-freemarker.template.TemplateModel-freemarker.template.TemplateModel-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>applyGreaterThanOperator</h4>
<pre>public&nbsp;boolean&nbsp;applyGreaterThanOperator(<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;leftValue,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;rightValue)
throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
<div class="block">Compares two <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s according the rules of the FTL "&gt;" operator.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.20</dd>
</dl>
</li>
</ul>
<a name="applyWithGreaterThanOrEqualsOperator-freemarker.template.TemplateModel-freemarker.template.TemplateModel-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>applyWithGreaterThanOrEqualsOperator</h4>
<pre>public&nbsp;boolean&nbsp;applyWithGreaterThanOrEqualsOperator(<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;leftValue,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;rightValue)
throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
<div class="block">Compares two <a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s according the rules of the FTL "&gt;=" operator.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.20</dd>
</dl>
</li>
</ul>
<a name="setOut-java.io.Writer-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setOut</h4>
<pre>public&nbsp;void&nbsp;setOut(java.io.Writer&nbsp;out)</pre>
</li>
</ul>
<a name="getOut--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOut</h4>
<pre>public&nbsp;java.io.Writer&nbsp;getOut()</pre>
</li>
</ul>
<a name="setNumberFormat-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setNumberFormat</h4>
<pre>public&nbsp;void&nbsp;setNumberFormat(java.lang.String&nbsp;formatName)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/Configurable.html#setNumberFormat-java.lang.String-">Configurable</a></code></span></div>
<div class="block">Sets the number format used to convert numbers to strings. Currently, this is one of these:
<ul>
<li><code>"number"</code>: The number format returned by <code>NumberFormat.getNumberInstance(Locale)</code>. This is the
default.</li>
<li><code>"c"</code> (recognized since 2.3.32): The number format used by FTL's <code>c</code> built-in (like in
<code>someNumber?c</code>). So with this <code>${someNumber}</code> will output the same as
<code>${someNumber?c}</code>. This should only be used if the template solely generates source code,
configuration file, or other content that's not read by normal users. If the template contains parts that's
read by normal users (like typical a web page), you are not supposed to use this.</li>
<li><code>"computer"</code>: The old (deprecated) name for <code>"c"</code>. Recognized by all FreeMarker versions.</li>
<li><code>"currency"</code>: The number format returned by <code>NumberFormat.getCurrencyInstance(Locale)</code></li>
<li><code>"percent"</code>: The number format returned by <code>NumberFormat.getPercentInstance(Locale)</code></li>
<li><code>DecimalFormat</code> pattern (like <code>"0.##"</code>). This syntax is extended by FreeMarker
so that you can specify options like the rounding mode and the symbols used after a 2nd semicolon. For
example, <code>",000;; roundingMode=halfUp groupingSeparator=_"</code> will format numbers like <code>",000"</code>
would, but with half-up rounding mode, and <code>_</code> as the group separator. See more about "extended Java
decimal format" in the FreeMarker Manual.
</li>
<li>If the string starts with <code>@</code> character followed by a letter then it's interpreted as a custom number
format, but only if either <a href="../../freemarker/template/Configuration.html#getIncompatibleImprovements--"><code>Configuration.getIncompatibleImprovements()</code></a> is at least 2.3.24, or
there's any custom formats defined (even if custom date/time/dateTime format). The format of a such string
is <code>"@<i>name</i>"</code> or <code>"@<i>name</i> <i>parameters</i>"</code>, where
<code><i>name</i></code> is the key in the <code>Map</code> set by <a href="../../freemarker/core/Configurable.html#setCustomNumberFormats-java.util.Map-"><code>Configurable.setCustomNumberFormats(Map)</code></a>, and
<code><i>parameters</i></code> is parsed by the custom <a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core"><code>TemplateNumberFormat</code></a>.
</li>
</ul>
<p>Defaults to <tt>"number"</tt>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../freemarker/core/Configurable.html#setNumberFormat-java.lang.String-">setNumberFormat</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></code></dd>
</dl>
</li>
</ul>
<a name="getTemplateNumberFormat--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTemplateNumberFormat</h4>
<pre>public&nbsp;<a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core">TemplateNumberFormat</a>&nbsp;getTemplateNumberFormat()
throws <a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></pre>
<div class="block">Returns the current number format (<a href="../../freemarker/core/Configurable.html#getNumberFormat--"><code>Configurable.getNumberFormat()</code></a>) as <a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core"><code>TemplateNumberFormat</code></a>.
<p>
Performance notes: The result is stored for reuse, so calling this method frequently is usually not a problem.
However, at least as of this writing (2.3.24), changing the current locale <a href="../../freemarker/core/Environment.html#setLocale-java.util.Locale-"><code>setLocale(Locale)</code></a> or changing
the current number format (<a href="../../freemarker/core/Environment.html#setNumberFormat-java.lang.String-"><code>setNumberFormat(String)</code></a>) will drop the stored value, so it will have to be
recalculated.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
</dl>
</li>
</ul>
<a name="getTemplateNumberFormat-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTemplateNumberFormat</h4>
<pre>public&nbsp;<a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core">TemplateNumberFormat</a>&nbsp;getTemplateNumberFormat(java.lang.String&nbsp;formatString)
throws <a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></pre>
<div class="block">Returns the number format as <a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core"><code>TemplateNumberFormat</code></a> for the given format string and the current locale.
(The current locale is the locale returned by <a href="../../freemarker/core/Configurable.html#getLocale--"><code>Configurable.getLocale()</code></a>.) Note that the result will be cached in the
<a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a> instance (though at least in 2.3.24 the cache will be flushed if the current locale of the
<a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a> is changed).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>formatString</code> - A string that you could also use as the value of the <code>numberFormat</code> configuration setting. Can't
be <code>null</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
</dl>
</li>
</ul>
<a name="getTemplateNumberFormat-java.lang.String-java.util.Locale-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTemplateNumberFormat</h4>
<pre>public&nbsp;<a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core">TemplateNumberFormat</a>&nbsp;getTemplateNumberFormat(java.lang.String&nbsp;formatString,
java.util.Locale&nbsp;locale)
throws <a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></pre>
<div class="block">Returns the number format as <a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core"><code>TemplateNumberFormat</code></a>, for the given format string and locale. To get a
number format for the current locale, use <a href="../../freemarker/core/Environment.html#getTemplateNumberFormat-java.lang.String-"><code>getTemplateNumberFormat(String)</code></a> instead.
<p>
Note on performance (which was true at least for 2.3.24): Unless the locale happens to be equal to the current
locale, the <a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a>-level format cache can't be used, so the format string has to be parsed and the
matching factory has to be get an invoked, which is much more expensive than getting the format from the cache.
Thus the returned format should be stored by the caller for later reuse (but only within the current thread and
in relation to the current <a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a>), if it will be needed frequently.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>formatString</code> - A string that you could also use as the value of the <code>numberFormat</code> configuration setting.</dd>
<dd><code>locale</code> - The locale of the number format; not <code>null</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
</dl>
</li>
</ul>
<a name="getCNumberFormat--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCNumberFormat</h4>
<pre>@Deprecated
public&nbsp;java.text.NumberFormat&nbsp;getCNumberFormat()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Use <a href="../../freemarker/core/Environment.html#getCTemplateNumberFormat--"><code>getCTemplateNumberFormat()</code></a> instead. This method can't return the format used when
<a href="../../freemarker/template/Configuration.html#setIncompatibleImprovements-freemarker.template.Version-">Incompatible Improvements</a> is 2.3.32,
or greater, and instead it will fall back to return the format that was used for 2.3.31. Also, as its described
earlier, this method was inconsistent with <code>?c</code> between Incompatible Improvements 2.3.21 and 2.3.30, while
<a href="../../freemarker/core/Environment.html#getCTemplateNumberFormat--"><code>getCTemplateNumberFormat()</code></a> behaves as <code>?c</code> for all Incompatible Improvements value.</span></div>
<div class="block">Returns the <code>NumberFormat</code> used for the <tt>c</tt> built-in, except, if
<a href="../../freemarker/template/Configuration.html#setIncompatibleImprovements-freemarker.template.Version-">Incompatible Improvements</a> is less than 2.3.31,
this will wrongly give the format that the <tt>c</tt> built-in used before Incompatible Improvements 2.3.21.
See more at <a href="../../freemarker/template/Configuration.html#Configuration-freemarker.template.Version-"><code>Configuration.Configuration(Version)</code></a>.</div>
</li>
</ul>
<a name="getCTemplateNumberFormat--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCTemplateNumberFormat</h4>
<pre>public&nbsp;<a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core">TemplateNumberFormat</a>&nbsp;getCTemplateNumberFormat()</pre>
<div class="block">Returns the <a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core"><code>TemplateNumberFormat</code></a> that <code>?c</code>/<code>?cn</code> uses.
Calling this method for many times is fine, as it internally caches the result object.
Remember that <a href="../../freemarker/core/TemplateNumberFormat.html" title="class in freemarker.core"><code>TemplateNumberFormat</code></a>-s aren't thread-safe objects, so the resulting object should only
be used in the same thread where this <a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a> runs.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.32</dd>
</dl>
</li>
</ul>
<a name="setCFormat-freemarker.core.CFormat-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCFormat</h4>
<pre>public&nbsp;void&nbsp;setCFormat(<a href="../../freemarker/core/CFormat.html" title="class in freemarker.core">CFormat</a>&nbsp;cFormat)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/Configurable.html#setCFormat-freemarker.core.CFormat-">Configurable</a></code></span></div>
<div class="block">Sets the format (usually a computer language) used for <code>?c</code>, <code>?cn</code>, and for the
<code>"c"</code> (<code>"computer"</code> before 2.3.32) <a href="../../freemarker/core/Configurable.html#setNumberFormat-java.lang.String-"><code>number_format</code></a>, and the
<code>"c"</code> <a href="../../freemarker/core/Configurable.html#setBooleanFormat-java.lang.String-"><code>boolean_format</code></a>.
<p>The default value depends on <a href="../../freemarker/template/Configuration.html#Configuration-freemarker.template.Version-"><code>incompatible_improvements</code></a>.
If that's 2.3.32 or higher, then it's <a href="../../freemarker/core/JavaScriptOrJSONCFormat.html#INSTANCE"><code>"JavaScript or JSON"</code></a>,
otherwise it's <a href="../../freemarker/core/LegacyCFormat.html#INSTANCE"><code>"legacy"</code></a>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../freemarker/core/Configurable.html#setCFormat-freemarker.core.CFormat-">setCFormat</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></code></dd>
</dl>
</li>
</ul>
<a name="setTimeFormat-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setTimeFormat</h4>
<pre>public&nbsp;void&nbsp;setTimeFormat(java.lang.String&nbsp;timeFormat)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/Configurable.html#setTimeFormat-java.lang.String-">Configurable</a></code></span></div>
<div class="block">Sets the format used to convert <code>Date</code>-s that are time (no date part) values to string-s, also
the format that <code>someString?time</code> will use to parse strings.
<p>For the possible values see <a href="../../freemarker/core/Configurable.html#setDateTimeFormat-java.lang.String-"><code>Configurable.setDateTimeFormat(String)</code></a>.
<p>Defaults to <code>""</code>, which is equivalent to <code>"medium"</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../freemarker/core/Configurable.html#setTimeFormat-java.lang.String-">setTimeFormat</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></code></dd>
</dl>
</li>
</ul>
<a name="setDateFormat-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setDateFormat</h4>
<pre>public&nbsp;void&nbsp;setDateFormat(java.lang.String&nbsp;dateFormat)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/Configurable.html#setDateFormat-java.lang.String-">Configurable</a></code></span></div>
<div class="block">Sets the format used to convert <code>Date</code>-s that are date-only (no time part) values to string-s,
also the format that <code>someString?date</code> will use to parse strings.
<p>For the possible values see <a href="../../freemarker/core/Configurable.html#setDateTimeFormat-java.lang.String-"><code>Configurable.setDateTimeFormat(String)</code></a>.
<p>Defaults to <code>""</code> which is equivalent to <code>"medium"</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../freemarker/core/Configurable.html#setDateFormat-java.lang.String-">setDateFormat</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></code></dd>
</dl>
</li>
</ul>
<a name="setDateTimeFormat-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setDateTimeFormat</h4>
<pre>public&nbsp;void&nbsp;setDateTimeFormat(java.lang.String&nbsp;dateTimeFormat)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/Configurable.html#setDateTimeFormat-java.lang.String-">Configurable</a></code></span></div>
<div class="block">Sets the format used to convert <code>Date</code>-s that are date-time (timestamp) values to string-s,
also the format that <code>someString?datetime</code> will use to parse strings.
<p>The possible setting values are (the quotation marks aren't part of the value itself):
<ul>
<li><p>Patterns accepted by Java's <code>SimpleDateFormat</code>, for example <code>"dd.MM.yyyy HH:mm:ss"</code> (where
<code>HH</code> means 24 hours format) or <code>"MM/dd/yyyy hh:mm:ss a"</code> (where <code>a</code> prints AM or PM, if
the current language is English).
<li><p><code>"xs"</code> for XML Schema format, or <code>"iso"</code> for ISO 8601:2004 format.
These formats allow various additional options, separated with space, like in
<code>"iso m nz"</code> (or with <code>_</code>, like in <code>"iso_m_nz"</code>; this is useful in a case like
<code>lastModified?string.iso_m_nz</code>). The options and their meanings are:
<ul>
<li><p>Accuracy options:<br>
<code>ms</code> = Milliseconds, always shown with all 3 digits, even if it's all 0-s.
Example: <code>13:45:05.800</code><br>
<code>s</code> = Seconds (fraction seconds are dropped even if non-0), like <code>13:45:05</code><br>
<code>m</code> = Minutes, like <code>13:45</code>. This isn't allowed for "xs".<br>
<code>h</code> = Hours, like <code>13</code>. This isn't allowed for "xs".<br>
Neither = Up to millisecond accuracy, but trailing millisecond 0-s are removed, also the whole
milliseconds part if it would be 0 otherwise. Example: <code>13:45:05.8</code>
<li><p>Time zone offset visibility options:<br>
<code>fz</code> = "Force Zone", always show time zone offset (even for for
<code>java.sql.Date</code> and <code>java.sql.Time</code> values).
But, because ISO 8601 doesn't allow for dates (means date without time of the day) to
show the zone offset, this option will have no effect in the case of <code>"iso"</code> with
dates.<br>
<code>nz</code> = "No Zone", never show time zone offset<br>
Neither = always show time zone offset, except for <code>java.sql.Date</code>
and <code>java.sql.Time</code>, and for <code>"iso"</code> date values.
<li><p>Time zone options:<br>
<code>u</code> = Use UTC instead of what the <code>time_zone</code> setting suggests. However,
<code>java.sql.Date</code> and <code>java.sql.Time</code> aren't affected
by this (see <a href="../../freemarker/core/Configurable.html#setSQLDateAndTimeTimeZone-java.util.TimeZone-"><code>Configurable.setSQLDateAndTimeTimeZone(TimeZone)</code></a> to understand why)<br>
<code>fu</code> = "Force UTC", that is, use UTC instead of what the <code>time_zone</code> or the
<code>sql_date_and_time_time_zone</code> setting suggests. This also effects
<code>java.sql.Date</code> and <code>java.sql.Time</code> values<br>
Neither = Use the time zone suggested by the <code>time_zone</code> or the
<code>sql_date_and_time_time_zone</code> configuration setting (<a href="../../freemarker/core/Configurable.html#setTimeZone-java.util.TimeZone-"><code>Configurable.setTimeZone(TimeZone)</code></a> and
<a href="../../freemarker/core/Configurable.html#setSQLDateAndTimeTimeZone-java.util.TimeZone-"><code>Configurable.setSQLDateAndTimeTimeZone(TimeZone)</code></a>).
</ul>
<p>The options can be specified in any order.</p>
<p>Options from the same category are mutually exclusive, like using <code>m</code> and <code>s</code>
together is an error.
<p>The accuracy and time zone offset visibility options don't influence parsing, only formatting.
For example, even if you use "iso m nz", "2012-01-01T15:30:05.125+01" will be parsed successfully and with
milliseconds accuracy.
The time zone options (like "u") influence what time zone is chosen only when parsing a string that doesn't
contain time zone offset.
<p>Parsing with <code>"iso"</code> understands both extend format and basic format, like
<code>20141225T235018</code>. It doesn't, however, support the parsing of all kind of ISO 8601 strings: if
there's a date part, it must use year, month and day of the month values (not week of the year), and the
day can't be omitted.
<p>The output of <code>"iso"</code> is deliberately so that it's also a good representation of the value with
XML Schema format, except for 0 and negative years, where it's impossible. Also note that the time zone
offset is omitted for date values in the <code>"iso"</code> format, while it's preserved for the <code>"xs"</code>
format.
<li><p><code>"short"</code>, <code>"medium"</code>, <code>"long"</code>, or <code>"full"</code>, which that has locale-dependent
meaning defined by the Java platform (see in the documentation of <code>DateFormat</code>).
For date-time values, you can specify the length of the date and time part independently, be separating
them with <code>_</code>, like <code>"short_medium"</code>. (<code>"medium"</code> means
<code>"medium_medium"</code> for date-time values.)
<li><p>Anything that starts with <code>"@"</code> followed by a letter is interpreted as a custom
date/time/dateTime format, but only if either <a href="../../freemarker/template/Configuration.html#getIncompatibleImprovements--"><code>Configuration.getIncompatibleImprovements()</code></a>
is at least 2.3.24, or there's any custom formats defined (even if custom number format). The format of
such string is <code>"@<i>name</i>"</code> or <code>"@<i>name</i> <i>parameters</i>"</code>, where
<code><i>name</i></code> is the key in the <code>Map</code> set by <a href="../../freemarker/core/Configurable.html#setCustomDateFormats-java.util.Map-"><code>Configurable.setCustomDateFormats(Map)</code></a>, and
<code><i>parameters</i></code> is parsed by the custom number format.
</ul>
<p>Defaults to <code>""</code>, which is equivalent to <code>"medium_medium"</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../freemarker/core/Configurable.html#setDateTimeFormat-java.lang.String-">setDateTimeFormat</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></code></dd>
</dl>
</li>
</ul>
<a name="setBooleanFormat-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setBooleanFormat</h4>
<pre>public&nbsp;void&nbsp;setBooleanFormat(java.lang.String&nbsp;booleanFormat)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../freemarker/core/Configurable.html#setBooleanFormat-java.lang.String-">Configurable</a></code></span></div>
<div class="block">The string value for the boolean <code>true</code> and <code>false</code> values, usually intended for human consumption
(not for a computer language), separated with comma. For example, <code>"yes,no"</code>. Note that white-space is
significant, so <code>"yes, no"</code> is WRONG (unless you want that leading space before "no"). Because the proper
way of formatting booleans depends on the context too much, it's probably the best to leave this setting on its
default, which will enforce explicit formatting, like <code>${aBoolean?string('on', 'off')}</code>.
<p>For backward compatibility the default is <code>"true,false"</code>, but using that value is denied for automatic
boolean-to-string conversion, like <code>${myBoolean}</code> will fail with it. If you generate the piece of
output for "computer audience" as opposed to "human audience", then you should write
<code>${myBoolean?c}</code>, which will print <code>true</code> or <code>false</code>. If you really want to always
format for computer audience, then it's might be reasonable to set this setting to <code>c</code>.
<p>Note that automatic boolean-to-string conversion only exists since FreeMarker 2.3.20. Earlier this setting
only influenced the result of <code>myBool?string</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../freemarker/core/Configurable.html#setBooleanFormat-java.lang.String-">setBooleanFormat</a></code>&nbsp;in class&nbsp;<code><a href="../../freemarker/core/Configurable.html" title="class in freemarker.core">Configurable</a></code></dd>
</dl>
</li>
</ul>
<a name="getConfiguration--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConfiguration</h4>
<pre>public&nbsp;<a href="../../freemarker/template/Configuration.html" title="class in freemarker.template">Configuration</a>&nbsp;getConfiguration()</pre>
</li>
</ul>
<a name="getTemplateDateFormat-int-java.lang.Class-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTemplateDateFormat</h4>
<pre>public&nbsp;<a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core">TemplateDateFormat</a>&nbsp;getTemplateDateFormat(int&nbsp;dateType,
java.lang.Class&lt;? extends java.util.Date&gt;&nbsp;dateClass)
throws <a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></pre>
<div class="block">Gets a <a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core"><code>TemplateDateFormat</code></a> using the date/time/datetime format settings and the current locale and time
zone. (The current locale is the locale returned by <a href="../../freemarker/core/Configurable.html#getLocale--"><code>Configurable.getLocale()</code></a>. The current time zone is
<a href="../../freemarker/core/Configurable.html#getTimeZone--"><code>Configurable.getTimeZone()</code></a> or <a href="../../freemarker/core/Configurable.html#getSQLDateAndTimeTimeZone--"><code>Configurable.getSQLDateAndTimeTimeZone()</code></a>).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dateType</code> - The FTL date type; see the similar parameter of
<a href="../../freemarker/core/TemplateDateFormatFactory.html#get-java.lang.String-int-java.util.Locale-java.util.TimeZone-boolean-freemarker.core.Environment-"><code>TemplateDateFormatFactory.get(String, int, Locale, TimeZone, boolean, Environment)</code></a></dd>
<dd><code>dateClass</code> - The exact <code>Date</code> class, like <code>Date</code> or <code>Time</code>; this can influences
time zone selection. See also: <a href="../../freemarker/core/Environment.html#setSQLDateAndTimeTimeZone-java.util.TimeZone-"><code>setSQLDateAndTimeTimeZone(TimeZone)</code></a></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></code></dd>
</dl>
</li>
</ul>
<a name="getTemplateDateFormat-java.lang.String-int-java.lang.Class-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTemplateDateFormat</h4>
<pre>public&nbsp;<a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core">TemplateDateFormat</a>&nbsp;getTemplateDateFormat(java.lang.String&nbsp;formatString,
int&nbsp;dateType,
java.lang.Class&lt;? extends java.util.Date&gt;&nbsp;dateClass)
throws <a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></pre>
<div class="block">Gets a <a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core"><code>TemplateDateFormat</code></a> for the specified format string and the current locale and time zone. (The
current locale is the locale returned by <a href="../../freemarker/core/Configurable.html#getLocale--"><code>Configurable.getLocale()</code></a>. The current time zone is <a href="../../freemarker/core/Configurable.html#getTimeZone--"><code>Configurable.getTimeZone()</code></a> or
<a href="../../freemarker/core/Configurable.html#getSQLDateAndTimeTimeZone--"><code>Configurable.getSQLDateAndTimeTimeZone()</code></a>).
<p>
Note on performance: The result will be cached in the <a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a> instance. However, at least in 2.3.24
the cached entries that depend on the current locale or the current time zone or the current date/time/datetime
format of the <a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a> will be lost when those settings are changed.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>formatString</code> - Like <code>"iso m"</code> or <code>"dd.MM.yyyy HH:mm"</code> or <code>"@somethingCustom"</code> or
<code>"@somethingCustom params"</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
</dl>
</li>
</ul>
<a name="getTemplateDateFormat-java.lang.String-int-java.lang.Class-java.util.Locale-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTemplateDateFormat</h4>
<pre>public&nbsp;<a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core">TemplateDateFormat</a>&nbsp;getTemplateDateFormat(java.lang.String&nbsp;formatString,
int&nbsp;dateType,
java.lang.Class&lt;? extends java.util.Date&gt;&nbsp;dateClass,
java.util.Locale&nbsp;locale)
throws <a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></pre>
<div class="block">Like <a href="../../freemarker/core/Environment.html#getTemplateDateFormat-java.lang.String-int-java.lang.Class-"><code>getTemplateDateFormat(String, int, Class)</code></a>, but allows you to use a different locale than the
current one. If you want to use the current locale, use <a href="../../freemarker/core/Environment.html#getTemplateDateFormat-java.lang.String-int-java.lang.Class-"><code>getTemplateDateFormat(String, int, Class)</code></a>
instead.
<p>
Performance notes regarding the locale and time zone parameters of
<a href="../../freemarker/core/Environment.html#getTemplateDateFormat-java.lang.String-int-java.util.Locale-java.util.TimeZone-boolean-"><code>getTemplateDateFormat(String, int, Locale, TimeZone, boolean)</code></a> apply.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>locale</code> - Can't be <code>null</code>; See the similar parameter of
<a href="../../freemarker/core/TemplateDateFormatFactory.html#get-java.lang.String-int-java.util.Locale-java.util.TimeZone-boolean-freemarker.core.Environment-"><code>TemplateDateFormatFactory.get(String, int, Locale, TimeZone, boolean, Environment)</code></a></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.4</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../freemarker/core/Environment.html#getTemplateDateFormat-java.lang.String-int-java.lang.Class-"><code>getTemplateDateFormat(String, int, Class)</code></a></dd>
</dl>
</li>
</ul>
<a name="getTemplateDateFormat-java.lang.String-int-java.lang.Class-java.util.Locale-java.util.TimeZone-java.util.TimeZone-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTemplateDateFormat</h4>
<pre>public&nbsp;<a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core">TemplateDateFormat</a>&nbsp;getTemplateDateFormat(java.lang.String&nbsp;formatString,
int&nbsp;dateType,
java.lang.Class&lt;? extends java.util.Date&gt;&nbsp;dateClass,
java.util.Locale&nbsp;locale,
java.util.TimeZone&nbsp;timeZone,
java.util.TimeZone&nbsp;sqlDateAndTimeTimeZone)
throws <a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></pre>
<div class="block">Like <a href="../../freemarker/core/Environment.html#getTemplateDateFormat-java.lang.String-int-java.lang.Class-"><code>getTemplateDateFormat(String, int, Class)</code></a>, but allows you to use a different locale and time zone
than the current one. If you want to use the current locale and time zone, use
<a href="../../freemarker/core/Environment.html#getTemplateDateFormat-java.lang.String-int-java.lang.Class-"><code>getTemplateDateFormat(String, int, Class)</code></a> instead.
<p>
Performance notes regarding the locale and time zone parameters of
<a href="../../freemarker/core/Environment.html#getTemplateDateFormat-java.lang.String-int-java.util.Locale-java.util.TimeZone-boolean-"><code>getTemplateDateFormat(String, int, Locale, TimeZone, boolean)</code></a> apply.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>timeZone</code> - The <code>TimeZone</code> used if <code>dateClass</code> is not an SQL date-only or time-only type. Can't be
<code>null</code>.</dd>
<dd><code>sqlDateAndTimeTimeZone</code> - The <code>TimeZone</code> used if <code>dateClass</code> is an SQL date-only or time-only type. Can't be
<code>null</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.4</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../freemarker/core/Environment.html#getTemplateDateFormat-java.lang.String-int-java.lang.Class-"><code>getTemplateDateFormat(String, int, Class)</code></a></dd>
</dl>
</li>
</ul>
<a name="getTemplateDateFormat-java.lang.String-int-java.util.Locale-java.util.TimeZone-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTemplateDateFormat</h4>
<pre>public&nbsp;<a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core">TemplateDateFormat</a>&nbsp;getTemplateDateFormat(java.lang.String&nbsp;formatString,
int&nbsp;dateType,
java.util.Locale&nbsp;locale,
java.util.TimeZone&nbsp;timeZone,
boolean&nbsp;zonelessInput)
throws <a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></pre>
<div class="block">Gets a <a href="../../freemarker/core/TemplateDateFormat.html" title="class in freemarker.core"><code>TemplateDateFormat</code></a> for the specified parameters. This is mostly meant to be used by
<a href="../../freemarker/core/TemplateDateFormatFactory.html" title="class in freemarker.core"><code>TemplateDateFormatFactory</code></a> implementations to delegate to a format based on a specific format string. It
works well for that, as its parameters are the same low level values as the parameters of
<a href="../../freemarker/core/TemplateDateFormatFactory.html#get-java.lang.String-int-java.util.Locale-java.util.TimeZone-boolean-freemarker.core.Environment-"><code>TemplateDateFormatFactory.get(String, int, Locale, TimeZone, boolean, Environment)</code></a>. For other tasks
consider the other overloads of this method.
<p>
Note on performance (which was true at least for 2.3.24): Unless the locale happens to be equal to the current
locale and the time zone with one of the current time zones (<a href="../../freemarker/core/Configurable.html#getTimeZone--"><code>Configurable.getTimeZone()</code></a> or
<a href="../../freemarker/core/Configurable.html#getSQLDateAndTimeTimeZone--"><code>Configurable.getSQLDateAndTimeTimeZone()</code></a>), the <a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a>-level format cache can't be used, so the format
string has to be parsed and the matching factory has to be get an invoked, which is much more expensive than
getting the format from the cache. Thus the returned format should be stored by the caller for later reuse (but
only within the current thread and in relation to the current <a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a>), if it will be needed
frequently.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>formatString</code> - Like <code>"iso m"</code> or <code>"dd.MM.yyyy HH:mm"</code> or <code>"@somethingCustom"</code> or
<code>"@somethingCustom params"</code></dd>
<dd><code>dateType</code> - The FTL date type; see the similar parameter of
<a href="../../freemarker/core/TemplateDateFormatFactory.html#get-java.lang.String-int-java.util.Locale-java.util.TimeZone-boolean-freemarker.core.Environment-"><code>TemplateDateFormatFactory.get(String, int, Locale, TimeZone, boolean, Environment)</code></a></dd>
<dd><code>timeZone</code> - Not <code>null</code>; See the similar parameter of
<a href="../../freemarker/core/TemplateDateFormatFactory.html#get-java.lang.String-int-java.util.Locale-java.util.TimeZone-boolean-freemarker.core.Environment-"><code>TemplateDateFormatFactory.get(String, int, Locale, TimeZone, boolean, Environment)</code></a></dd>
<dd><code>locale</code> - Not <code>null</code>; See the similar parameter of
<a href="../../freemarker/core/TemplateDateFormatFactory.html#get-java.lang.String-int-java.util.Locale-java.util.TimeZone-boolean-freemarker.core.Environment-"><code>TemplateDateFormatFactory.get(String, int, Locale, TimeZone, boolean, Environment)</code></a></dd>
<dd><code>zonelessInput</code> - See the similar parameter of
<a href="../../freemarker/core/TemplateDateFormatFactory.html#get-java.lang.String-int-java.util.Locale-java.util.TimeZone-boolean-freemarker.core.Environment-"><code>TemplateDateFormatFactory.get(String, int, Locale, TimeZone, boolean, Environment)</code></a></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/core/TemplateValueFormatException.html" title="class in freemarker.core">TemplateValueFormatException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
</dl>
</li>
</ul>
<a name="getLocalVariable-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLocalVariable</h4>
<pre>public&nbsp;<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;getLocalVariable(java.lang.String&nbsp;name)
throws <a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
<div class="block">Returns the loop or macro local variable corresponding to this variable name.
Returns <code>null</code> if no such variable exists with the given name, or the variable was set to
<code>null</code>. Doesn't read namespace or global variables.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
</dl>
</li>
</ul>
<a name="getVariable-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getVariable</h4>
<pre>public&nbsp;<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;getVariable(java.lang.String&nbsp;name)
throws <a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
<div class="block">Returns the variable that is visible in this context, or <code>null</code> if the variable is not found. This is the
correspondent to an FTL top-level variable reading expression. That is, it tries to find the the variable in this
order:
<ol>
<li>An loop variable (if we're in a loop or user defined directive body) such as foo_has_next
<li>A local variable (if we're in a macro)
<li>A variable defined in the current namespace (say, via &lt;#assign ...&gt;)
<li>A variable defined globally (say, via &lt;#global ....&gt;)
<li>Variable in the data model:
<ol>
<li>A variable in the root hash that was exposed to this rendering environment in the Template.process(...) call
<li>A shared variable set in the configuration via a call to Configuration.setSharedVariable(...)
</ol>
</li>
</ol></div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
</dl>
</li>
</ul>
<a name="getGlobalVariable-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getGlobalVariable</h4>
<pre>public&nbsp;<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;getGlobalVariable(java.lang.String&nbsp;name)
throws <a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
<div class="block">Returns the globally visible variable of the given name, or <code>null</code>. This corresponds to FTL
<code>.globals.<i>name</i></code>. This will first look at variables that were assigned globally via:
<code>&lt;#global ...&gt;</code> and then at the data model exposed to the template, and then at the
<a href="../../freemarker/template/Configuration.html#setSharedVariables-java.util.Map-">Configuration.setSharedVariables(Map)</a> shared variables} in the <a href="../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
</dl>
</li>
</ul>
<a name="getDataModelOrSharedVariable-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDataModelOrSharedVariable</h4>
<pre>public&nbsp;<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;getDataModelOrSharedVariable(java.lang.String&nbsp;name)
throws <a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
<div class="block">Returns the variable from the data-model, or if it's not there, then from the
<a href="../../freemarker/template/Configuration.html#setSharedVariables-java.util.Map-">Configuration.setSharedVariables(Map)</a> shared variables}</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.30</dd>
</dl>
</li>
</ul>
<a name="setGlobalVariable-java.lang.String-freemarker.template.TemplateModel-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setGlobalVariable</h4>
<pre>public&nbsp;void&nbsp;setGlobalVariable(java.lang.String&nbsp;name,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;value)</pre>
<div class="block">Sets a variable in the global namespace, like <code>&lt;#global name=value&gt;</code>.
This can be considered a convenient shorthand for <code>getGlobalNamespace().put(name, model)</code>.
<p>Note that this is not an exact pair of <a href="../../freemarker/core/Environment.html#getGlobalVariable-java.lang.String-"><code>getGlobalVariable(String)</code></a>, as that falls back to higher scopes
if the variable is not in the global namespace.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - The name of the variable.</dd>
<dd><code>value</code> - The new value of the variable. <code>null</code> in effect removes the local variable (reading it will fall
back to higher scope).</dd>
</dl>
</li>
</ul>
<a name="setVariable-java.lang.String-freemarker.template.TemplateModel-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setVariable</h4>
<pre>public&nbsp;void&nbsp;setVariable(java.lang.String&nbsp;name,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;value)</pre>
<div class="block">Sets a variable in the current namespace, like <code>&lt;#assign name=value&gt;</code>.
This can be considered a convenient shorthand for: <code>getCurrentNamespace().put(name, model)</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - The name of the variable.</dd>
<dd><code>value</code> - The new value of the variable. <code>null</code> in effect removes the local variable (reading it will fall
back to higher scope).</dd>
</dl>
</li>
</ul>
<a name="setLocalVariable-java.lang.String-freemarker.template.TemplateModel-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setLocalVariable</h4>
<pre>public&nbsp;void&nbsp;setLocalVariable(java.lang.String&nbsp;name,
<a href="../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;value)</pre>
<div class="block">Sets a local variable that's on the top-level inside a macro or function invocation, like
<code>&lt;#local name=value&gt;</code>.
Note that just like <code>&lt;#local name=value&gt;</code>, this will not set loop variables; it will totally ignore
them, and might sets a local variable that a loop variable currently "shadows". As such, it's not exactly the
pair of <a href="../../freemarker/core/Environment.html#getLocalVariable-java.lang.String-"><code>getLocalVariable(String)</code></a>, which also reads loop variables.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - The name of the variable.</dd>
<dd><code>value</code> - The new value of the variable. <code>null</code> in effect removes the local variable (reading it will fall
back to higher scope).</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if the environment is not executing a macro body.</dd>
</dl>
</li>
</ul>
<a name="getKnownVariableNames--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getKnownVariableNames</h4>
<pre>public&nbsp;java.util.Set&nbsp;getKnownVariableNames()
throws <a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
<div class="block">Returns a set of variable names that are known at the time of call. This includes names of all shared variables
in the <a href="../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a>, 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 <a href="../../freemarker/template/TemplateHashModelEx.html" title="interface in freemarker.template"><code>TemplateHashModelEx</code></a> interface, then all names it retrieves through a call
to <a href="../../freemarker/template/TemplateHashModelEx.html#keys--"><code>TemplateHashModelEx.keys()</code></a> 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.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
</dl>
</li>
</ul>
<a name="outputInstructionStack-java.io.PrintWriter-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>outputInstructionStack</h4>
<pre>public&nbsp;void&nbsp;outputInstructionStack(java.io.PrintWriter&nbsp;pw)</pre>
<div class="block">Prints the current FTL stack trace. Useful for debugging. <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template"><code>TemplateException</code></a>s incorporate this information
in their stack traces.</div>
</li>
</ul>
<a name="getNamespace-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNamespace</h4>
<pre>public&nbsp;<a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core">Environment.Namespace</a>&nbsp;getNamespace(java.lang.String&nbsp;name)</pre>
<div class="block">Returns the name-space for the name if exists, or null.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the template path that you have used with the <code>import</code> directive or
<a href="../../freemarker/core/Environment.html#importLib-java.lang.String-java.lang.String-"><code>importLib(String, String)</code></a> call, in normalized form. That is, the path must be an absolute
path, and it must not contain "/../" or "/./". The leading "/" is optional.</dd>
</dl>
</li>
</ul>
<a name="getMainNamespace--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMainNamespace</h4>
<pre>public&nbsp;<a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core">Environment.Namespace</a>&nbsp;getMainNamespace()</pre>
<div class="block">Returns the main namespace. This corresponds to the FTL <code>.main</code> hash.</div>
</li>
</ul>
<a name="getCurrentNamespace--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentNamespace</h4>
<pre>public&nbsp;<a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core">Environment.Namespace</a>&nbsp;getCurrentNamespace()</pre>
<div class="block">Returns the current namespace. This corresponds to the FTL <code>.namespace</code> hash. Initially, the current name
space is the main namespace, but when inside an <code>#import</code>-ed template, it will change to the namespace of
that import. Note that <code>#include</code> doesn't affect the namespace, so if you are in an <code>#import</code>-ed
template and then from there do an <code>#include</code>, the current namespace will remain the namespace of the
<code>#import</code>.</div>
</li>
</ul>
<a name="getGlobalNamespace--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getGlobalNamespace</h4>
<pre>public&nbsp;<a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core">Environment.Namespace</a>&nbsp;getGlobalNamespace()</pre>
<div class="block">Returns the name-space that contains the globally visible non-data-model variables (usually created with
<code>&amp;lt;#global ...&amp;gt;</code>).</div>
</li>
</ul>
<a name="getDataModel--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDataModel</h4>
<pre>public&nbsp;<a href="../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template">TemplateHashModel</a>&nbsp;getDataModel()</pre>
<div class="block">Returns a view of the data-model (also known as the template context in some other template engines)
that falls back to <a href="../../freemarker/template/Configuration.html#setSharedVariable-java.lang.String-freemarker.template.TemplateModel-">shared variables</a>.</div>
</li>
</ul>
<a name="getGlobalVariables--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getGlobalVariables</h4>
<pre>public&nbsp;<a href="../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template">TemplateHashModel</a>&nbsp;getGlobalVariables()</pre>
<div class="block">Returns the read-only hash of globally visible variables. This is the correspondent of FTL <code>.globals</code>
hash. That is, you see the variables created with <code>&lt;#global ...&gt;</code>, and the variables of the
data-model. To create new global variables, use <a href="../../freemarker/core/Environment.html#setGlobalVariable-java.lang.String-freemarker.template.TemplateModel-"><code>setGlobalVariable</code></a>.</div>
</li>
</ul>
<a name="getCurrentVisitorNode--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentVisitorNode</h4>
<pre>public&nbsp;<a href="../../freemarker/template/TemplateNodeModel.html" title="interface in freemarker.template">TemplateNodeModel</a>&nbsp;getCurrentVisitorNode()</pre>
</li>
</ul>
<a name="setCurrentVisitorNode-freemarker.template.TemplateNodeModel-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCurrentVisitorNode</h4>
<pre>public&nbsp;void&nbsp;setCurrentVisitorNode(<a href="../../freemarker/template/TemplateNodeModel.html" title="interface in freemarker.template">TemplateNodeModel</a>&nbsp;node)</pre>
<div class="block">sets TemplateNodeModel as the current visitor node. <tt>.current_node</tt></div>
</li>
</ul>
<a name="include-java.lang.String-java.lang.String-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>include</h4>
<pre>public&nbsp;void&nbsp;include(java.lang.String&nbsp;name,
java.lang.String&nbsp;encoding,
boolean&nbsp;parse)
throws java.io.IOException,
<a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
<div class="block">Emulates <code>include</code> directive, except that <code>name</code> must be template root relative.
<p>
It's the same as <code>include(getTemplateForInclusion(name, encoding, parse))</code>. 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.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../freemarker/core/Environment.html#getTemplateForInclusion-java.lang.String-java.lang.String-boolean-"><code>getTemplateForInclusion(String name, String encoding, boolean parse)</code></a>,
<a href="../../freemarker/core/Environment.html#include-freemarker.template.Template-"><code>include(Template includedTemplate)</code></a></dd>
</dl>
</li>
</ul>
<a name="getTemplateForInclusion-java.lang.String-java.lang.String-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTemplateForInclusion</h4>
<pre>public&nbsp;<a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;getTemplateForInclusion(java.lang.String&nbsp;name,
java.lang.String&nbsp;encoding,
boolean&nbsp;parse)
throws java.io.IOException</pre>
<div class="block">Same as <a href="../../freemarker/core/Environment.html#getTemplateForInclusion-java.lang.String-java.lang.String-boolean-boolean-"><code>getTemplateForInclusion(String, String, boolean, boolean)</code></a> with <code>false</code>
<code>ignoreMissing</code> argument.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a name="getTemplateForInclusion-java.lang.String-java.lang.String-boolean-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTemplateForInclusion</h4>
<pre>public&nbsp;<a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;getTemplateForInclusion(java.lang.String&nbsp;name,
java.lang.String&nbsp;encoding,
boolean&nbsp;parseAsFTL,
boolean&nbsp;ignoreMissing)
throws java.io.IOException</pre>
<div class="block">Gets a template for inclusion; used for implementing <a href="../../freemarker/core/Environment.html#include-freemarker.template.Template-"><code>include(Template includedTemplate)</code></a>. The advantage
over simply using <code>config.getTemplate(...)</code> is that it chooses the default encoding exactly as the
<code>include</code> directive does, although that encoding selection mechanism is a historical baggage and
considered to be harmful.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - 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
<a href="../../freemarker/cache/TemplateCache.html#getFullTemplatePath-freemarker.core.Environment-java.lang.String-java.lang.String-"><code>TemplateCache.getFullTemplatePath(freemarker.core.Environment, java.lang.String, java.lang.String)</code></a> to convert paths to template root relative
paths.) For more details see the identical parameter of
<a href="../../freemarker/template/Configuration.html#getTemplate-java.lang.String-java.util.Locale-java.lang.String-boolean-boolean-"><code>Configuration.getTemplate(String, Locale, String, boolean, boolean)</code></a></dd>
<dd><code>encoding</code> - the charset of the obtained template. If <code>null</code>, the encoding of the top template that is
currently being processed in this <a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a> is used, which can lead to odd situations, so
using <code>null</code> is not recommended. In most applications, the value of
<a href="../../freemarker/template/Configuration.html#getEncoding-java.util.Locale-"><code>Configuration.getEncoding(Locale)</code></a> (or <a href="../../freemarker/template/Configuration.html#getDefaultEncoding--"><code>Configuration.getDefaultEncoding()</code></a>) should be
used here.</dd>
<dd><code>parseAsFTL</code> - See identical parameter of <a href="../../freemarker/template/Configuration.html#getTemplate-java.lang.String-java.util.Locale-java.lang.String-boolean-boolean-"><code>Configuration.getTemplate(String, Locale, String, boolean, boolean)</code></a></dd>
<dd><code>ignoreMissing</code> - See identical parameter of <a href="../../freemarker/template/Configuration.html#getTemplate-java.lang.String-java.util.Locale-java.lang.String-boolean-boolean-"><code>Configuration.getTemplate(String, Locale, String, boolean, boolean)</code></a></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Same as <a href="../../freemarker/template/Configuration.html#getTemplate-java.lang.String-java.util.Locale-java.lang.String-boolean-boolean-"><code>Configuration.getTemplate(String, Locale, String, boolean, boolean)</code></a></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - Same as exceptions thrown by
<a href="../../freemarker/template/Configuration.html#getTemplate-java.lang.String-java.util.Locale-java.lang.String-boolean-boolean-"><code>Configuration.getTemplate(String, Locale, String, boolean, boolean)</code></a></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.21</dd>
</dl>
</li>
</ul>
<a name="include-freemarker.template.Template-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>include</h4>
<pre>public&nbsp;void&nbsp;include(<a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;includedTemplate)
throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a>,
java.io.IOException</pre>
<div class="block">Processes a Template in the context of this <code>Environment</code>, including its output in the
<code>Environment</code>'s Writer.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>includedTemplate</code> - the template to process. Note that it does <em>not</em> need to be a template returned by
<a href="../../freemarker/core/Environment.html#getTemplateForInclusion-java.lang.String-java.lang.String-boolean-"><code>getTemplateForInclusion(String name, String encoding, boolean parse)</code></a>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a name="importLib-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>importLib</h4>
<pre>public&nbsp;<a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core">Environment.Namespace</a>&nbsp;importLib(java.lang.String&nbsp;templateName,
java.lang.String&nbsp;targetNsVarName)
throws java.io.IOException,
<a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
<div class="block">Emulates <code>import</code> directive, except that <code>templateName</code> must be template root relative.
<p>
It's the same as <code>importLib(getTemplateForImporting(templateName), namespace)</code>. 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.
<p>
If it will be a lazy or an eager import is decided by the value of <a href="../../freemarker/core/Configurable.html#getLazyImports--"><code>Configurable.getLazyImports()</code></a>. You
can also directly control that aspect by using <a href="../../freemarker/core/Environment.html#importLib-java.lang.String-java.lang.String-boolean-"><code>importLib(String, String, boolean)</code></a> instead.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Not <code>null</code>. This is possibly a lazily self-initializing namespace, which means that it will only
try to get and process the imported template when you access its content.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../freemarker/core/Environment.html#getTemplateForImporting-java.lang.String-"><code>getTemplateForImporting(String templateName)</code></a>,
<a href="../../freemarker/core/Environment.html#importLib-freemarker.template.Template-java.lang.String-"><code>importLib(Template includedTemplate, String namespaceVarName)</code></a>,
<a href="../../freemarker/core/Environment.html#importLib-java.lang.String-java.lang.String-boolean-"><code>importLib(String, String, boolean)</code></a></dd>
</dl>
</li>
</ul>
<a name="importLib-freemarker.template.Template-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>importLib</h4>
<pre>public&nbsp;<a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core">Environment.Namespace</a>&nbsp;importLib(<a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;loadedTemplate,
java.lang.String&nbsp;targetNsVarName)
throws java.io.IOException,
<a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
<div class="block">Does what the <code>#import</code> directive does, but with an already loaded template.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>loadedTemplate</code> - The template to import. Note that it does <em>not</em> need to be a template returned by
<a href="../../freemarker/core/Environment.html#getTemplateForImporting-java.lang.String-"><code>getTemplateForImporting(String name)</code></a>. Not <code>null</code>.</dd>
<dd><code>targetNsVarName</code> - The name of the FTL variable that will store the namespace. If <code>null</code>, the namespace
won't be stored in a variable (but it's still returned).</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The namespace of the imported template, already initialized.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../freemarker/core/Environment.html#getTemplateForImporting-java.lang.String-"><code>getTemplateForImporting(String name)</code></a>,
<a href="../../freemarker/core/Environment.html#importLib-freemarker.template.Template-java.lang.String-"><code>importLib(Template includedTemplate, String namespaceVarName)</code></a></dd>
</dl>
</li>
</ul>
<a name="importLib-java.lang.String-java.lang.String-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>importLib</h4>
<pre>public&nbsp;<a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core">Environment.Namespace</a>&nbsp;importLib(java.lang.String&nbsp;templateName,
java.lang.String&nbsp;targetNsVarName,
boolean&nbsp;lazy)
throws java.io.IOException,
<a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
<div class="block">Like <a href="../../freemarker/core/Environment.html#importLib-java.lang.String-java.lang.String-"><code>importLib(String, String)</code></a>, but you can specify if you want a
<a href="../../freemarker/core/Configurable.html#setLazyImports-boolean-">lazy import</a> or not.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Not <code>null</code>. This is possibly a lazily self-initializing namespace, which mean that it will only try
to get and process the imported template when you access its content.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.25</dd>
</dl>
</li>
</ul>
<a name="getTemplateForImporting-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTemplateForImporting</h4>
<pre>public&nbsp;<a href="../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;getTemplateForImporting(java.lang.String&nbsp;name)
throws java.io.IOException</pre>
<div class="block">Gets a template for importing; used with <a href="../../freemarker/core/Environment.html#importLib-freemarker.template.Template-java.lang.String-"><code>importLib(Template importedTemplate, String namespace)</code></a>. The
advantage over simply using <code>config.getTemplate(...)</code> is that it chooses the encoding as the
<code>import</code> directive does.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - 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
<a href="../../freemarker/cache/TemplateCache.html#getFullTemplatePath-freemarker.core.Environment-java.lang.String-java.lang.String-"><code>TemplateCache.getFullTemplatePath(freemarker.core.Environment, java.lang.String, java.lang.String)</code></a> to convert paths to template root relative
paths.)</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a name="toFullTemplateName-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toFullTemplateName</h4>
<pre>public&nbsp;java.lang.String&nbsp;toFullTemplateName(java.lang.String&nbsp;baseName,
java.lang.String&nbsp;targetName)
throws <a href="../../freemarker/template/MalformedTemplateNameException.html" title="class in freemarker.template">MalformedTemplateNameException</a></pre>
<div class="block">Resolves a reference to a template (like the one used in <code>#include</code> or <code>#import</code>), assuming a base
name. This gives a root based, even if non-normalized and possibly non-absolute (but then relative to the root)
template name, that could be used for <a href="../../freemarker/template/Configuration.html#getTemplate-java.lang.String-"><code>Configuration.getTemplate(String)</code></a>. This is mostly used when a
template refers to another template.
<p>
If you need to guarantee that the result is also an absolute path, then apply
<a href="../../freemarker/core/Environment.html#rootBasedToAbsoluteTemplateName-java.lang.String-"><code>rootBasedToAbsoluteTemplateName(String)</code></a> on it.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>baseName</code> - The name to which relative <code>targetName</code>-s are relative to. Maybe <code>null</code> (happens when
resolving names in nameless templates), which means that the base is the root "directory", and so the
<code>targetName</code> is returned without change. Assuming <a href="../../freemarker/cache/TemplateNameFormat.html#DEFAULT_2_3_0"><code>TemplateNameFormat.DEFAULT_2_3_0</code></a> or
<a href="../../freemarker/cache/TemplateNameFormat.html#DEFAULT_2_4_0"><code>TemplateNameFormat.DEFAULT_2_4_0</code></a>, the rules are as follows. If you want to specify a base
directory here, it must end with <code>"/"</code>. If it doesn't end with <code>"/"</code>, it's parent
directory will be used as the base path. Might starts with a scheme part (like <code>"foo://"</code>, or
with <a href="../../freemarker/cache/TemplateNameFormat.html#DEFAULT_2_4_0"><code>TemplateNameFormat.DEFAULT_2_4_0</code></a> even just with <code>"foo:"</code>).</dd>
<dd><code>targetName</code> - The name of the template, which is either a relative or absolute name. Assuming
<a href="../../freemarker/cache/TemplateNameFormat.html#DEFAULT_2_3_0"><code>TemplateNameFormat.DEFAULT_2_3_0</code></a> or <a href="../../freemarker/cache/TemplateNameFormat.html#DEFAULT_2_4_0"><code>TemplateNameFormat.DEFAULT_2_4_0</code></a>, the rules are as
follows. If it starts with <code>"/"</code> or contains a scheme part separator (<code>"://"</code>, also, with
<a href="../../freemarker/cache/TemplateNameFormat.html#DEFAULT_2_4_0"><code>TemplateNameFormat.DEFAULT_2_4_0</code></a> a <code>":"</code> with no <code>"/"</code> anywhere before it) then
it's an absolute name, otherwise it's a relative path. Relative paths are interpreted relatively to
the <code>baseName</code>. Absolute names are simply returned as is, ignoring the <code>baseName</code>, except,
when the <code>baseName</code> has scheme part while the <code>targetName</code> doesn't have, then the schema
of the <code>baseName</code> is prepended to the <code>targetName</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/MalformedTemplateNameException.html" title="class in freemarker.template">MalformedTemplateNameException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
</dl>
</li>
</ul>
<a name="rootBasedToAbsoluteTemplateName-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rootBasedToAbsoluteTemplateName</h4>
<pre>public&nbsp;java.lang.String&nbsp;rootBasedToAbsoluteTemplateName(java.lang.String&nbsp;rootBasedName)
throws <a href="../../freemarker/template/MalformedTemplateNameException.html" title="class in freemarker.template">MalformedTemplateNameException</a></pre>
<div class="block">Converts a root based name (a name that's either relative to the root, or is absolute), which are typically used
by the API (such as for <a href="../../freemarker/template/Configuration.html#getTemplate-java.lang.String-"><code>Configuration.getTemplate(String)</code></a>), to an absolute name, which can be safely
passed to <code>&lt;#include path&gt;</code> and such, as it won't be misinterpreted to be relative to the directory of the
template. For example, <code>"foo/bar.ftl"</code> is converted to <code>"/foo/bar.ftl"</code>, while <code>"/foo/bar"</code> or
<code>"foo://bar/baz"</code> remains as is, as they are already absolute names (see <a href="../../freemarker/cache/TemplateNameFormat.html" title="class in freemarker.cache"><code>TemplateNameFormat</code></a> for
more about the format of names).
<p>
You only need this if the template name will be passed to <code>&lt;#include name&gt;</code>, <code>&lt;#import name&gt;</code>,
<code>.get_optional_template(name)</code> or a similar construct in a template, otherwise using non-absolute root
based names is fine.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/MalformedTemplateNameException.html" title="class in freemarker.template">MalformedTemplateNameException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.28</dd>
</dl>
</li>
</ul>
<a name="getNamespaceForPrefix-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNamespaceForPrefix</h4>
<pre>public&nbsp;java.lang.String&nbsp;getNamespaceForPrefix(java.lang.String&nbsp;prefix)</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the namespace URI registered for this prefix, or null. This is based on the mappings registered in the
current namespace.</dd>
</dl>
</li>
</ul>
<a name="getPrefixForNamespace-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPrefixForNamespace</h4>
<pre>public&nbsp;java.lang.String&nbsp;getPrefixForNamespace(java.lang.String&nbsp;nsURI)</pre>
</li>
</ul>
<a name="getDefaultNS--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDefaultNS</h4>
<pre>public&nbsp;java.lang.String&nbsp;getDefaultNS()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the default node namespace for the current FTL namespace</dd>
</dl>
</li>
</ul>
<a name="Z:Z__getitem__-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>__getitem__</h4>
<pre>public&nbsp;java.lang.Object&nbsp;__getitem__(java.lang.String&nbsp;key)
throws <a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
<div class="block">A hook that Jython uses.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
</dl>
</li>
</ul>
<a name="Z:Z__setitem__-java.lang.String-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>__setitem__</h4>
<pre>public&nbsp;void&nbsp;__setitem__(java.lang.String&nbsp;key,
java.lang.Object&nbsp;o)
throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
<div class="block">A hook that Jython uses.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
</dl>
</li>
</ul>
<a name="getCustomState-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCustomState</h4>
<pre>public&nbsp;java.lang.Object&nbsp;getCustomState(java.lang.Object&nbsp;identityKey)</pre>
<div class="block">Returns the value of a custom state variable, or <code>null</code> if it's missing; see
<a href="../../freemarker/core/Environment.html#setCustomState-java.lang.Object-java.lang.Object-"><code>setCustomState(Object, Object)</code></a> for more.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
</dl>
</li>
</ul>
<a name="setCustomState-java.lang.Object-java.lang.Object-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setCustomState</h4>
<pre>public&nbsp;java.lang.Object&nbsp;setCustomState(java.lang.Object&nbsp;identityKey,
java.lang.Object&nbsp;value)</pre>
<div class="block">Sets the value of a custom state variable. Custom state variables meant to be used by
<a href="../../freemarker/core/TemplateNumberFormatFactory.html" title="class in freemarker.core"><code>TemplateNumberFormatFactory</code></a>-es, <a href="../../freemarker/core/TemplateDateFormatFactory.html" title="class in freemarker.core"><code>TemplateDateFormatFactory</code></a>-es, and similar user-implementable,
pluggable objects, which want to maintain an <a href="../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a>-scoped state (such as a cache).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>identityKey</code> - The key that identifies the variable, by its object identity (not by <code>Object.equals(Object)</code>).
This should be something like a <code>private static final Object CUSTOM_STATE_KEY = new Object();</code>
in the class that needs this state variable.</dd>
<dd><code>value</code> - The value of the variable. Can be anything, even <code>null</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The previous value of the variable, or <code>null</code> if the variable didn't exist.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/Environment.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../freemarker/core/DirectiveCallPlace.html" title="interface in freemarker.core"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../freemarker/core/Environment.Namespace.html" title="class in freemarker.core"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?freemarker/core/Environment.html" target="_top">Frames</a></li>
<li><a href="Environment.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#fields.inherited.from.class.freemarker.core.Configurable">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>