You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2017/03/15 21:19:11 UTC
[14/51] [partial] incubator-freemarker-site git commit: 2.3.26-voting
docs, removed nightly
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/a4004324/builds/2.3.26-nightly/versions_2_2.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_2.html b/builds/2.3.26-nightly/versions_2_2.html
deleted file mode 100644
index a4854d3..0000000
--- a/builds/2.3.26-nightly/versions_2_2.html
+++ /dev/null
@@ -1,1107 +0,0 @@
-<!doctype html>
-<!-- Generated by FreeMarker/Docgen from DocBook -->
-<html lang="en" class="page-type-section">
-<head prefix="og: http://ogp.me/ns#">
-<meta charset="utf-8">
-<title>2.2 - Apache FreeMarker Manual</title>
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="format-detection" content="telephone=no">
-<meta property="og:site_name" content="Apache FreeMarker Manual">
-<meta property="og:title" content="2.2">
-<meta property="og:locale" content="en_US">
-<meta property="og:url" content="http://freemarker.org/docs/versions_2_2.html">
-<link rel="canonical" href="http://freemarker.org/docs/versions_2_2.html">
-<link rel="icon" href="favicon.png" type="image/png">
-<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
-<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
-<script>
-(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-ga('create', 'UA-55420501-1', 'auto');
-ga('send', 'pageview');
-</script>
-</head>
-<body itemscope itemtype="https://schema.org/Code">
- <meta itemprop="url" content="http://freemarker.org/docs/">
- <meta itemprop="name" content="Apache FreeMarker Manual">
-
- <!--[if lte IE 9]>
- <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
- <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner"> <img itemprop="image" src="logo.png" alt="FreeMarker">
-</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_2.html"><span itemprop="name">2.2</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div> <div class="main-content site-width">
- <div class="content-wrapper">
- <div id="table-of-contents-wrapper" class="col-left">
- <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.2"];</script>
- <script src="toc.js?1489402528979"></script>
- <script src="docgen-resources/main.min.js?1489402528979"></script>
- </div>
-<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_2_1.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_1_5.html"><span>Next</span></a></div><div class="title-wrapper">
-<h1 class="content-header header-section1" id="versions_2_2" itemprop="headline">2.2</h1>
-</div></div><div class="page-menu">
-<div class="page-menu-title">Page Contents</div>
-<ul><li><a class="page-menu-link" href="#autoid_260" data-menu-target="autoid_260">Non backward-compatible changes!</a></li><li><a class="page-menu-link" href="#autoid_261" data-menu-target="autoid_261">Changes in FTL (FreeMarker Template Language)</a></li><li><a class="page-menu-link" href="#autoid_262" data-menu-target="autoid_262">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_263" data-menu-target="autoid_263">Other changes</a></li><li><a class="page-menu-link" href="#autoid_264" data-menu-target="autoid_264">The history of the releases before the final version</a><ul><li><a class="page-menu-link" href="#autoid_265" data-menu-target="autoid_265">Differences between the final and RC2 releases</a></li><li><a class="page-menu-link" href="#autoid_266" data-menu-target="autoid_266">Differences between the RC2 and RC1 releases</a></li><li><a class="page-menu-link" href="#autoid_267" data-menu-target="autoid_267">Differences between the Preview 2 and RC1 r
eleases</a></li><li><a class="page-menu-link" href="#autoid_268" data-menu-target="autoid_268">Differences between the Preview 1 and Preview 2
-releases</a></li></ul></li></ul> </div><p>Date of release: 2003-03-27</p><p>This release introduces some really important new features.
- Unfortunately, evolution was painful again; we have a few non-backward
- compatible changes (see below). Also, for those of you awaiting
- desired native date/time type, sorry, it is still not here (because of
- some internal chaos in the team... stand by, it's coming).</p>
-
-
-
-
-<h2 class="content-header header-section2" id="autoid_260">Non backward-compatible changes!</h2>
-
-
- <ul>
- <li>
- <p>Macros are now plain variables. This means that if you are
- unlucky and you have both a macro and another variable with the
- same name, now the variable will overwrite the macro, so your
- old template will malfunction. If you have a collection of
- common macros, you should use the new <a href="dgui_misc_namespace.html">namespace feature</a> to
- prevent accidental clashes with the variables used in the
- templates.</p>
- </li>
-
- <li>
- <p>With the introduction of the new <a href="dgui_misc_namespace.html">namespace support</a>,
- <code class="inline-code">global</code> and <code class="inline-code">assign</code>
- directives are no longer synonyms. <code class="inline-code">assign</code>
- creates a variable in the current <code class="inline-code">namespace</code>,
- while <code class="inline-code">global</code> creates variable that is visible
- from all namespaces (as if the variable would be in the
- data-model). Thus, the variable created with
- <code class="inline-code">assign</code> is more specific, and hides the
- variable of the same name created with
- <code class="inline-code">global</code>. As a result, if you use both
- <code class="inline-code">global</code> and <code class="inline-code">assign</code> mixed
- for the same variable in your templates, now they will
- malfunction. The solution is to search-and-replace all
- <code class="inline-code">global</code>s in your old templates with
- <code class="inline-code">assign</code>.</p>
- </li>
-
- <li>
- <p>The reserved hash <code class="inline-code">root</code> no longer exists
- as a predefined variable (we no longer have reserved variables).
- Use <a href="dgui_template_exp.html#dgui_template_exp_var_special">special
- variable expressions</a> to achieve similar effects. However,
- we have no equivalent replacement for <code class="inline-code">root</code>
- because of the changes in the variable scopes caused by the
- introduction of namespaces. You may should use
- <code class="inline-code">.globals</code> or
- <code class="inline-code">.namespace</code>.</p>
- </li>
-
- <li>
- <p>The <code class="inline-code">BeansWrapper</code> no longer exposes
- native Java arrays, booleans, numbers, enumerations, iterators,
- and resource bundles as <code class="inline-code">TemplateScalarModel</code>.
- This way, number objects wrapped through
- <code class="inline-code">BeansWrapper</code> are subject to FreeMarker's
- number formatting machinery. Also, booleans can be formatted
- using the <code class="inline-code">?string</code> built-in.</p>
- </li>
-
- <li>
- <p>The signature of
- <code class="inline-code">Configuration.setServletContextForTemplateLoading</code>
- has been changed: the first parameter is now
- <code class="inline-code">Object</code> instead of
- <code class="inline-code">javax.servlet.ServletContext</code>. Thus, you have
- to recompile your classes that call this method. The change was
- required to prevent class-loading failure when
- <code class="inline-code">javax.servlet</code> classes are not available and
- you would not call this method.</p>
- </li>
-
- <li>
- <p>This release introduces a <a href="dgui_misc_whitespace.html">parse-time white-space
- remover</a> that strips some of the typical superfluous
- white-space around FreeMarker tags and comments. <em>This
- feature is on by default!</em> Most probably this will not
- cause problems if you generate white-space neutral output like
- HTML. But if it does cause undesirable reformatting in output
- you generate, you can disable it with
- <code class="inline-code">config.setWhitespaceStripping(false)</code>. Also,
- you can enable/disable it on a per-template basis with the new
- <a href="ref_directive_ftl.html#ref.directive.ftl"><code>ftl</code></a>
- directive.</p>
- </li>
-
- <li>
- <p>Some new directives were introduced:
- <code class="inline-code">nested</code>, <code class="inline-code">import</code>,
- <code class="inline-code">escape</code>, <code class="inline-code">noescape</code>,
- <code class="inline-code">t</code>, <code class="inline-code">rt</code>,
- <code class="inline-code">lt</code>. This means that if you are unlucky and
- the text of your template contains something like
- <code class="inline-code"><nested></code>, then that will be
- misinterpreted as a directive. To prevent this kind of problem
- in the future, we recommend everybody to switch from the old
- syntax to the new syntax ("strict syntax"). The
- strict syntax will be the the default syntax starting from some
- of the later releases anyway. We plan to release a conversion
- tool for converting old templates. For more information please
- read: <a href="ref_depr_oldsyntax.html">Template Language Reference/Deprecated FTL constructs/Old FTL syntax</a></p>
- </li>
-
- <li>
- <p>The data-model created by the
- <code class="inline-code">FreemarkerServlet</code> now uses automatic scope
- discovery, so writing
- <code class="inline-code">Application.<em class="code-color">attrName</em></code>,
- <code class="inline-code">Session.<em class="code-color">attrName</em></code>,
- <code class="inline-code">Request.<em class="code-color">attrName</em></code>
- is no longer mandatory; it's enough to write
- <code class="inline-code"><em class="code-color">attrName</em></code> (for more
- information <a href="pgui_misc_servlet.html#topic.servlet.scopeAttr">read
- this</a>). This may break an old template if that rely on the
- non-existence of certain top-level variables.</p>
- </li>
-
- <li>
- <p><code class="inline-code">FreemarkerServlet</code> now uses the encoding
- of the template file for the output, unless you specify the
- encoding in the <code class="inline-code">ContentType</code> init-param, such
- as <code class="inline-code">text/html; charset=UTF-8</code>.</p>
- </li>
-
- <li>
- <p>The format of template paths is now more restricted than
- before. The path must not use <code class="inline-code">/</code>,
- <code class="inline-code">./</code> and <code class="inline-code">../</code> and
- <code class="inline-code">://</code> with other meaning as they have in URL
- paths (or in UN*X paths). The characters <code class="inline-code">*</code>
- and <code class="inline-code">?</code> are reserved. Also, the template loader
- must not want paths starting with <code class="inline-code">/</code>. For more
- information please read: <a href="pgui_config_templateloading.html">Programmer's Guide/The Configuration/Template loading</a></p>
- </li>
-
- <li>
- <p>Till now
- <code class="inline-code">TemplateTransformModel.getWriter</code> has received
- null as parameter map if the transform was called without
- parameters. From now, it will receive an empty Map instead. Note
- that the previous API documentation didn't state that it always
- receives null if there are no parameters, so hopelessly only
- very few classes exploit this design mistake.</p>
- </li>
- </ul>
-
-
-
-
-
-<h2 class="content-header header-section2" id="autoid_261">Changes in FTL (FreeMarker Template Language)</h2>
-
-
- <ul>
- <li>
- <p>User-defined directives: Transform and macro call syntax
- has been unified; they can be called in the same way, as
- user-defined directives. This also means that macros support
- named parameters and nested content (like the -- now deprecated
- -- <code class="inline-code">transform</code> directive did). For example, if
- you have a macro called <code class="inline-code">sect</code>, you may call it
- via <code class="inline-code"><@sect title="Blah" style="modern">Blah
- blah...</@sect></code>. For more information read:
- <a href="dgui_misc_userdefdir.html">Template Author's Guide/Miscellaneous/Defining your own directives</a></p>
- </li>
-
- <li>
- <p>Macros are now plain variables. This significantly
- simplifies FreeMarker semantics, while providing more
- flexibility; for example you can pass macros as parameters to
- other macros and transforms. As for the problem of clashing
- commonly-used-macro and variable names, we provide a more
- powerful solution: namespaces.</p>
- </li>
-
- <li>
- <p>Namespaces: Names-spaces are invaluable if you want to
- assemble collections ("libraries") of macros and
- transforms (and other variables), and then use them in any
- template without worrying about accidental name clashes with the
- application specific and temporary variables, or with the
- variables of other collections you want to use in the same
- template. This is extremely important if FreeMarker users want
- to share their macro/transform collections. For more information
- read: <a href="dgui_misc_namespace.html">Template Author's Guide/Miscellaneous/Namespaces</a></p>
- </li>
-
- <li>
- <p>With the introduction of namespaces our variable related
- terminology changed. As a result, <code class="inline-code">assign</code> is
- no longer synonymous with <code class="inline-code">global</code>. The
- <code class="inline-code">assign</code> directive has been undeprecated, and
- should be used instead of <code class="inline-code">global</code> almost
- everywhere. In the new approach <code class="inline-code">assign</code>
- creates variables in the current namespace, while
- <code class="inline-code">global</code> creates a variable that is visible
- from all namespaces (as if the variable were in the root of the
- data-model). A variable created with <code class="inline-code">assign</code>
- in the current namespace hides the variable of the same name
- that was created with <code class="inline-code">global</code>.</p>
- </li>
-
- <li>
- <p><code class="inline-code">ftl</code> directive: With this directive you
- can give information about the template for FreeMarker, like the
- encoding (charset) of the template, the used FTL syntax variant,
- etc. Also, this directive helps you to write templates that are
- less dependent on FreeMarker configuration settings, also it
- helps third-party tools to identify and correctly parse
- FreeMarker templates. For more information see: <a href="ref_directive_ftl.html#ref.directive.ftl"><code>ftl</code>
- directive</a></p>
- </li>
-
- <li>
- <p>White-space stripping: FreeMarker now automatically
- removes some of the typical superfluous white-spaces around
- FreeMarker tags and comments, like the indentation spaces
- before- and line-break after <code class="inline-code"><#if ...></code>
- tags. For more information read: <a href="dgui_misc_whitespace.html#dgui_misc_whitespace_stripping">Template Author's Guide/Miscellaneous/White-space handling/White-space stripping</a></p>
- </li>
-
- <li>
- <p>New directive to apply a common ("escaping") expression to
- all interpolations in a block: <a href="ref_directive_escape.html#ref.directive.escape"><code>escape</code></a>.
- The name comes from the common usage of this directive for
- automatic HTML-escaping of interpolations.</p>
- </li>
-
- <li>
- <p>The new and preferred way of number formatting with
- <code class="inline-code">string</code> built-in is
- <code class="inline-code">foo?string(format)</code>, instead of the less
- natural <code class="inline-code">foo?string[format]</code>.</p>
- </li>
-
- <li>
- <p>The <code class="inline-code">string</code> built-in works for boolean
- values. For example: <code class="inline-code">${spamFilter?string("enabled",
- "disabled")}</code>. For more information <a href="ref_builtins_boolean.html#ref_builtin_string_for_boolean">read the
- reference</a>.</p>
- </li>
-
- <li>
- <p>The default strings for outputting boolean value using the
- <code class="inline-code">string</code> built-in can be set using the
- <code class="inline-code">boolean_format</code> setting.</p>
- </li>
-
- <li>
- <p>Comments can be placed inside FTL tags and interpolations.
- For example: <code class="inline-code"><#assign <#-- a comment --> x =
- 3></code></p>
- </li>
-
- <li>
- <p>All letters and numbers are enabled in variable names,
- also <code class="inline-code">$</code> is allowed (as in Java programming
- language). Thus you can use accents, Arabic letters, Chinese
- letters, etc.</p>
- </li>
-
- <li>
- <p>String literals can be quoted with apostrophe-quote.
- <code class="inline-code">"foo"</code> and <code class="inline-code">'foo'</code> are
- equivalent.</p>
- </li>
-
- <li>
- <p>New <a href="ref_builtins_string.html">string
- built-ins</a>: <code class="inline-code">index_of</code>,
- <code class="inline-code">last_index_of</code>,
- <code class="inline-code">starts_with</code>, <code class="inline-code">ends_with</code>,
- <code class="inline-code">replace</code>, <code class="inline-code">split</code>,
- <code class="inline-code">chop_linebreak</code>,
- <code class="inline-code">uncap_first</code>.</p>
- </li>
-
- <li>
- <p>New <a href="ref_builtins_sequence.html">sequence
- built-ins</a>: <code class="inline-code">sort</code>,
- <code class="inline-code">sort_by</code>.</p>
- </li>
-
- <li>
- <p>New built-ins for experts to check the type of a variable.
- See: <a href="ref_builtins_expert.html#ref_builtin_isType"><code>is_<em>...</em></code>
- built-ins</a></p>
- </li>
-
- <li>
- <p>New built-in for experts to create a variable of certain
- Java <code class="inline-code">TemplateModel</code> implementation. See: <a href="ref_builtins_expert.html#ref_builtin_new"><code>new</code>
- built-in</a></p>
- </li>
-
- <li>
- <p>New built-in, <a href="ref_builtins_expert.html#ref_builtin_namespace"><code>namespace</code></a>,
- to get the namespace of a macro.</p>
- </li>
-
- <li>
- <p>New expression type: special variable expression. To
- prevent backward compatibility problems when we introduce new
- predefined variables, from now <a href="dgui_template_exp.html#dgui_template_exp_var_special">special variable
- expressions</a> are used to access them.</p>
- </li>
-
- <li>
- <p>New directives: <code class="inline-code">t</code>,
- <code class="inline-code">rt</code> and <code class="inline-code">lt</code> directives allow
- you to do explicit white-space removal in extreme FTL
- applications. For more information read <a href="ref_directive_t.html#ref.directive.t">the reference</a>.</p>
- </li>
-
- <li>
- <p><code class="inline-code">assign</code>, <code class="inline-code">local</code> and
- <code class="inline-code">global</code> now can capture the output generated
- be the nested template fragment into the variable. This
- deprecates <code class="inline-code">capture_output</code> transform. More
- information: <a href="ref_directive_assign.html#ref.directive.assign">assign
- directive reference</a></p>
- </li>
-
- <li>
- <p>Bulk assignments (as <code class="inline-code"><#assign x=1, y=2,
- z=3></code>) no longer need colon to separate the
- assignments (as <code class="inline-code"><#assign x=1 y=2 z=3></code>),
- although it is still allowed to preserve backward
- compatibility.</p>
- </li>
-
- <li>
- <p>Path that contains <code class="inline-code">//:</code> is considered as
- absolute path.</p>
- </li>
-
- <li>
- <p><code class="inline-code">include</code> and
- <code class="inline-code">transform</code> directives no longer need a
- semicolon to separate the template or transform name from the
- parameter list, although it is still allowed to preserve
- backward compatibility.</p>
- </li>
-
- <li>
- <p><code class="inline-code">#</code>-less tag syntax is deprecated (but
- still working). That is, you should write
- <code class="inline-code"><#<em class="code-color">directive
- ...</em>></code> instead of
- <code class="inline-code"><<em class="code-color">directive
- ...</em>></code>, and
- <code class="inline-code"></#<em class="code-color">directive
- ...</em>></code> instead of
- <code class="inline-code"></<em class="code-color">directive
- ...</em>></code>. For more info read: <a href="ref_depr_oldsyntax.html">Template Language Reference/Deprecated FTL constructs/Old FTL syntax</a></p>
- </li>
-
- <li>
- <p><code class="inline-code">foreach</code> is depreciated (but still
- working). Use <a href="ref_directive_list.html#ref.directive.list"><code>list</code></a>
- instead.</p>
- </li>
-
- <li>
- <p>Bugfix: Undefined variables in hash and sequence
- constructors (as <code class="inline-code">[a, b, c]</code>) didn't caused
- errors.</p>
- </li>
-
- <li>
- <p>Bugfix: String concatenation had performance problem if
- there was multiple concatenations chained, as:
- <code class="inline-code">"a"+x+"a"+x+"a"+x+"a"+x+"a"+x</code>.</p>
- </li>
- </ul>
-
-
-
-
-
-<h2 class="content-header header-section2" id="autoid_262">Changes on the Java side</h2>
-
-
- <ul>
- <li>
- <p>Arbitrary JSP custom tags can be used as FreeMarker
- transforms in <code class="inline-code">FreemarkerServlet</code>-driven
- templates. More information: <a href="pgui_misc_servlet.html">Programmer's Guide/Miscellaneous/Using FreeMarker with servlets</a></p>
- </li>
-
- <li>
- <p>Various improvements for
- <code class="inline-code">BeansWrapper</code>:</p>
-
- <ul>
- <li>
- <p>The <code class="inline-code">BeansWrapper</code> no longer exposes
- arbitrary objects as
- <code class="inline-code">TemplateScalarModel</code>s, only
- <code class="inline-code">java.lang.String</code> and
- <code class="inline-code">Character</code> objects. This way, number
- objects wrapped through <code class="inline-code">BeansWrapper</code> are
- subject to FreeMarker's number formatting machinery. As a
- side effect, non-string and non-number objects that were
- previously accepted in equality and inequality operations
- (because they had a string representation) will now cause
- the engine to throw exception on comparison attempt.</p>
- </li>
-
- <li>
- <p><code class="inline-code">java.lang.Character</code> objects are
- exposed as scalars through
- <code class="inline-code">BeansWrapper</code>.</p>
- </li>
-
- <li>
- <p>Experimental feature: With the
- <code class="inline-code">setSimpleMapWrapper</code> method of
- <code class="inline-code">BeansWrapper</code> you can configure it to wrap
- <code class="inline-code">java.util.Map</code>-s as
- <code class="inline-code">TemplateHashModelEx</code>-s, and do not expose
- the methods of the object.</p>
- </li>
- </ul>
- </li>
-
- <li>
- <p><code class="inline-code">TransformControl</code> interface (was
- experimental earlier): If the <code class="inline-code">Writer</code> returned
- by <code class="inline-code">TemplateTransformModel.getWriter</code>
- implements this interface, it can instruct the engine to skip or
- to repeat evaluation of the nested content, and gets notified
- about exceptions that are thrown during the nested content
- evaluation. Note that the <code class="inline-code">onStart</code> and
- <code class="inline-code">afterBody</code> methods now are allowed to throw
- <code class="inline-code">IOException</code>. For more information please read
- the API documentation.</p>
- </li>
-
- <li>
- <p>Localized lookup can be disabled with the new
- <code class="inline-code">Configuration</code> methods:
- <code class="inline-code">set/getLocalizedLookup</code>,
- <code class="inline-code">clearTemplateCache</code></p>
- </li>
-
- <li>
- <p>The new interface
- <code class="inline-code">freemarker.cache.CacheStorage</code> allows users to
- plug custom template caching strategies with the
- <code class="inline-code">cache_storage</code> setting. The core package now
- ships with two implementations:
- <code class="inline-code">SoftCacheStorage</code> and
- <code class="inline-code">StrongCacheStorage</code>. For more information
- read: <a href="pgui_config_templateloading.html">Programmer's Guide/The Configuration/Template loading</a></p>
- </li>
-
- <li>
- <p>You can set settings with string name and string value
- with the new <code class="inline-code">setSetting(String key, String
- value)</code> method of <code class="inline-code">Configurable</code>
- super-classes (as <code class="inline-code">Configuration</code>). Also you
- can load settings from <code class="inline-code">.properties</code> file with
- the <code class="inline-code">setSettings</code> method.</p>
- </li>
-
- <li>
- <p>Other new <code class="inline-code">Configuration</code> methods:
- <code class="inline-code">clearTemplateCache</code>,
- <code class="inline-code">clearSharedVariables</code>,
- <code class="inline-code">getTemplateLoader</code>, and
- <code class="inline-code">clone</code>.</p>
- </li>
-
- <li>
- <p>Changes to <code class="inline-code">TemplateTransformModel</code>
- interface: <code class="inline-code">getWriter</code> can throw
- <code class="inline-code">IOException</code>, and can return
- <code class="inline-code">null</code> if the transform does not support body
- content.</p>
- </li>
-
- <li>
- <p>Till now
- <code class="inline-code">TemplateTransformModel.getWriter</code> has received
- null as parameter map if the transform was called without
- parameters. From now, it will receive an empty Map instead. Note
- that the previous API documentation didn't state that it always
- receives null if there are no parameters, so hopelessly only
- very few classes exploit this design mistake.</p>
- </li>
-
- <li>
- <p>Various improvements for
- <code class="inline-code">FreemarkerServlet</code>:</p>
-
- <ul>
- <li>
- <p>The data-model now uses automatic scope discovery, so
- writing
- <code class="inline-code">Application.<em class="code-color">attrName</em></code>,
- <code class="inline-code">Session.<em class="code-color">attrName</em></code>,
- <code class="inline-code">Request.<em class="code-color">attrName</em></code>
- is no longer mandatory; it's enough to write
- <code class="inline-code"><em class="code-color">attrName</em></code>. For
- more information <a href="pgui_misc_servlet.html#topic.servlet.scopeAttr">read this</a>.</p>
- </li>
-
- <li>
- <p><code class="inline-code">FreemarkerServlet</code> now uses the
- encoding of the template file for the output, unless you
- specify the encoding in the <code class="inline-code">ContentType</code>
- init-param, such as <code class="inline-code">text/html;
- charset=UTF-8</code>.</p>
- </li>
-
- <li>
- <p>All <code class="inline-code">Configuration</code> level settings
- can by set with Servlet init-params
- (<code class="inline-code">template_exception_handler</code>,
- <code class="inline-code">locale</code>, <code class="inline-code">number_format</code>,
- etc.).</p>
- </li>
-
- <li>
- <p>The object wrapper the servlet internally uses is now
- set as the default object wrapper for its
- <code class="inline-code">Configuration</code> instance.</p>
- </li>
-
- <li>
- <p>It no longer forces session creation for requests that
- don't belong to an existing session, improving
- scalability.</p>
- </li>
- </ul>
- </li>
-
- <li>
- <p>JDOM independent XML-wrapping:
- <code class="inline-code">freemarker.ext.xml.NodeListModel</code> is a
- re-implementation of
- <code class="inline-code">freemarker.ext.jdom.NodeListModel</code> that does
- not rely on JDOM; you don't need JDOM .jar anymore. The new
- <code class="inline-code">NodeListModel</code> automatically uses W3C DOM,
- dom4j, or JDOM, depending on which library is available (that
- is, depending on what object do you pass to its
- constructor).</p>
- </li>
-
- <li>
- <p>Bugfix: <code class="inline-code">WebappTemplateLoader</code>: Template
- updating didn't worked correctly with Tomcat due the caching of
- resources. Now <code class="inline-code">WebappTemplateLoader</code> tries to
- access the resources directly as <code class="inline-code">File</code>, if it
- is possible, thus bypasses the caching.</p>
- </li>
-
- <li>
- <p>Various bug-fixes for
- <code class="inline-code">FreemarkerServlet</code>:</p>
-
- <ul>
- <li>
- <p>The servlet now loads the correct template if it was
- called through
- <code class="inline-code">RequestDispatcher.include</code>.</p>
- </li>
-
- <li>
- <p>The caching of <code class="inline-code">HttpServletRequest</code>
- objects is now compliant with the servlet
- specification.</p>
- </li>
-
- <li>
- <p><code class="inline-code">TemplateException</code>s was suppressed
- in certain situations resulting in half-rendered pages
- without error message.</p>
- </li>
- </ul>
- </li>
-
- <li>
- <p>Bugfix: FreeMarker didn't work if the
- <code class="inline-code">javax.servlet</code> classes was not available,
- because <code class="inline-code">Configuration</code> explicitly referred to
- <code class="inline-code">javax.servlet.ServletContext</code>.</p>
- </li>
-
- <li>
- <p>Bugfix: classes may were not found if they was available
- only in the <code class="inline-code">WEB-INF</code>, and FreeMarker tried to
- load the class dynamically.</p>
- </li>
-
- <li>
- <p>Bugfix: the <code class="inline-code">Template</code> constructor (and
- thus <code class="inline-code">Configuration.getTemplate</code>) sometimes
- threw <code class="inline-code">TokenMgrError</code> (a non-checked exception)
- instead of <code class="inline-code">ParseException</code>.</p>
- </li>
- </ul>
-
-
-
-
-
-<h2 class="content-header header-section2" id="autoid_263">Other changes</h2>
-
-
- <ul>
- <li>
- <p>The Web application related examples has been
- replaced.</p>
- </li>
- </ul>
-
-
-
-
-
-<h2 class="content-header header-section2" id="autoid_264">The history of the releases before the final version</h2>
-
-
-
-
-
-
-
-<h3 class="content-header header-section3" id="autoid_265">Differences between the final and RC2 releases</h3>
-
-
- <ul>
- <li>
- <p>You can load settings from
- <code class="inline-code">.properties</code> file with the
- <code class="inline-code">setSettings</code> method of
- <code class="inline-code">Configuration</code> and other
- <code class="inline-code">Configurable</code> subclasses.</p>
- </li>
-
- <li>
- <p>New string built-in:
- <code class="inline-code">uncap_first</code></p>
- </li>
-
- <li>
- <p>Bugfix: When exposing an XML document to a template and
- accessing it with XPath using Jaxen a
- <code class="inline-code">ClassCastException</code> has occurred.</p>
- </li>
-
- <li>
- <p>Bugfix: The template cache has loaded templates with bad
- <code class="inline-code">Configuration</code> instance in certain
- situations if you use not the static default
- <code class="inline-code">Configuration</code> instance.</p>
- </li>
- </ul>
-
-
-
-
-
-
-
-<h3 class="content-header header-section3" id="autoid_266">Differences between the RC2 and RC1 releases</h3>
-
-
- <ul>
- <li>
- <p>Non backward compatible change!:
- <code class="inline-code">FreemarkerServlet</code> now uses the encoding of
- the template file for the output, unless you specify the
- encoding in the <code class="inline-code">ContentType</code> init-param,
- such as <code class="inline-code">text/html; charset=UTF-8</code>.</p>
- </li>
-
- <li>
- <p>Non backward compatible change compared to RC1!: The
- <code class="inline-code">capture_output</code> transform creates variable
- in the current namespace (as <code class="inline-code">assign</code>
- directive) with the <code class="inline-code">var</code> parameter, not a
- global variable.</p>
- </li>
-
- <li>
- <p>The new and preferred way of number formatting with
- <code class="inline-code">string</code> built-in is
- <code class="inline-code">foo?string(format)</code>, instead of the less
- natural <code class="inline-code">foo?string[format]</code>.</p>
- </li>
-
- <li>
- <p>The <code class="inline-code">string</code> built-in works for boolean
- values. For example: <code class="inline-code">${spamFilter?string("enabled",
- "disabled")}</code>. For more information <a href="ref_builtins_boolean.html#ref_builtin_string_for_boolean">read the
- reference</a>.</p>
- </li>
-
- <li>
- <p>The default strings for outputting boolean value using
- the <code class="inline-code">string</code> built-in can be set using the
- <code class="inline-code">boolean_format</code> setting.</p>
- </li>
-
- <li>
- <p>String literals can be quoted with apostrophe-quote.
- <code class="inline-code">"foo"</code> and <code class="inline-code">'foo'</code> are
- equivalent.</p>
- </li>
-
- <li>
- <p>The new interface
- <code class="inline-code">freemarker.cache.CacheStorage</code> allows users
- to plug custom template caching strategies with the
- <code class="inline-code">cache_storage</code> setting. The core package now
- ships with two implementations:
- <code class="inline-code">SoftCacheStorage</code> and
- <code class="inline-code">StrongCacheStorage</code>. For more information
- read: <a href="pgui_config_templateloading.html">Programmer's Guide/The Configuration/Template loading</a></p>
- </li>
-
- <li>
- <p>You can set settings with string name and string value
- with the new <code class="inline-code">setSetting(String key, String
- value)</code> method of <code class="inline-code">Configurable</code>
- super-classes (as <code class="inline-code">Configuration</code>).</p>
- </li>
-
- <li>
- <p>Other new <code class="inline-code">Configuration</code> methods:
- <code class="inline-code">getTemplateLoader</code>,
- <code class="inline-code">clone</code>.</p>
- </li>
-
- <li>
- <p><code class="inline-code">assign</code>, <code class="inline-code">local</code> and
- <code class="inline-code">global</code> now can capture the output generated
- be the nested template fragment into the variable. This
- deprecates <code class="inline-code">capture_output</code> transform. More
- information: <a href="ref_directive_assign.html#ref.directive.assign">assign
- directive reference</a></p>
- </li>
-
- <li>
- <p>Other new <code class="inline-code">Configuration</code> methods:
- <code class="inline-code">getTemplateLoader</code>,
- <code class="inline-code">clone</code>.</p>
- </li>
-
- <li>
- <p>Changes to <code class="inline-code">TemplateTransformModel</code>
- interface: <code class="inline-code">getWriter</code> can throw
- <code class="inline-code">IOException</code>, and can return
- <code class="inline-code">null</code> if the transform does not support body
- content.</p>
- </li>
-
- <li>
- <p>Till now
- <code class="inline-code">TemplateTransformModel.getWriter</code> has
- received null as parameter map if the transform was called
- without parameters. From now, it will receive an empty Map
- instead. Note that the previous API documentation didn't state
- that it always receives null if there are no parameters, so
- hopelessly only very few classes exploit this design
- mistake.</p>
- </li>
-
- <li>
- <p>Changes to <code class="inline-code">TemplateControl</code> interface:
- <code class="inline-code">onStart</code> and <code class="inline-code">afterBody</code>
- methods are now allowed to throw
- <code class="inline-code">IOException</code>.</p>
- </li>
-
- <li>
- <p>Path that contains <code class="inline-code">//:</code> is considered
- as absolute path.</p>
- </li>
-
- <li>
- <p>New <a href="ref_builtins_string.html">string
- built-ins</a>: <code class="inline-code">index_of</code>,
- <code class="inline-code">last_index_of</code>,
- <code class="inline-code">starts_with</code>, <code class="inline-code">ends_with</code>,
- <code class="inline-code">replace</code>, <code class="inline-code">split</code>,
- <code class="inline-code">chop_linebreak</code>.</p>
- </li>
-
- <li>
- <p>New <a href="ref_builtins_sequence.html">sequence
- built-ins</a>: <code class="inline-code">sort</code>,
- <code class="inline-code">sort_by</code>.</p>
- </li>
-
- <li>
- <p>All <code class="inline-code">Configuration</code> level settings can
- by set with Servlet init-params
- (<code class="inline-code">template_exception_handler</code>,
- <code class="inline-code">locale</code>, <code class="inline-code">number_format</code>,
- etc.).</p>
- </li>
-
- <li>
- <p>Bugfix: classes may were not found if they was available
- only in the <code class="inline-code">WEB-INF</code>, and FreeMarker tried
- to load the class dynamically.</p>
- </li>
-
- <li>
- <p>Bugfix: <code class="inline-code">setLocalizedLookup(false)</code> of
- <code class="inline-code">Configuration</code> was overridden when you have
- called <code class="inline-code">setTemplateLoader</code>.</p>
- </li>
-
- <li>
- <p>Bugfix: String concatenation had performance problem if
- there was multiple concatenations chained, as:
- <code class="inline-code">"a"+x+"a"+x+"a"+x+"a"+x+"a"+x</code>.</p>
- </li>
-
- <li>
- <p>Bugfix: white-space stripping was not worked with tags
- spanning over multiple lines.</p>
- </li>
-
- <li>
- <p>Bugfix: Removing several dependencies on JDK 1.3, so
- FreeMarker can be build for JDK 1.2.2.</p>
- </li>
- </ul>
-
-
-
-
-
-
-
-<h3 class="content-header header-section3" id="autoid_267">Differences between the Preview 2 and RC1 releases</h3>
-
-
- <ul>
- <li>
- <p><code class="inline-code">ftl</code> is now stricter, and does not
- allow custom parameters. To associate custom attributes to
- templates, we may add a new directive later, if there is a
- demand for it.</p>
- </li>
-
- <li>
- <p><code class="inline-code">escape</code> directive does not affect
- numerical interpolations
- (<code class="inline-code">#{<em class="code-color">...</em>}</code>)
- anymore, as it has caused errors with string escapes as
- <code class="inline-code">?html</code>.</p>
- </li>
-
- <li>
- <p>The <code class="inline-code">normalizeName</code> method of
- <code class="inline-code">freemarker.cache.TemplateLoader</code> has been
- removed, because it has caused too many complications.
- Instead, normalization happens on a single point in the
- <code class="inline-code">TempateCache</code>. In consequence, FreeMarker is
- now stricter about the format of template paths, as things
- like <code class="inline-code">/../</code> are interpreted by the
- core.</p>
- </li>
-
- <li>
- <p>Experimental feature: With the
- <code class="inline-code">setSimpleMapWrapper</code> method of
- <code class="inline-code">BeansWrapper</code> you can configure it to wrap
- <code class="inline-code">java.util.Map</code>-s as
- <code class="inline-code">TemplateHashModelEx</code>-s, and do not expose
- the methods of the object.</p>
- </li>
-
- <li>
- <p>New <code class="inline-code">Configuration</code> methods:
- <code class="inline-code">set/getLocalizedLookup</code>,
- <code class="inline-code">clearTemplateCache</code>,
- <code class="inline-code">clearSharedVariables</code>.</p>
- </li>
-
- <li>
- <p>More cleanups in the <code class="inline-code">Environment</code>
- API.</p>
- </li>
-
- <li>
- <p>Better JSP standard compliance: JSP page-scope variables
- are the global variables that were created in the template
- (not the variables of the data-model).</p>
- </li>
-
- <li>
- <p>JDOM independent XML-wrapping:
- <code class="inline-code">freemarker.ext.xml.NodeListModel</code> is a
- re-implementation of
- <code class="inline-code">freemarker.ext.jdom.NodeListModel</code> that does
- not rely on JDOM; you don't need JDOM .jar anymore. The new
- <code class="inline-code">NodeListModel</code> automatically uses W3C DOM,
- dom4j, or JDOM, depending on which library is available (that
- is, depending on what object do you pass to its
- constructor).</p>
- </li>
-
- <li>
- <p>Bugfix: <code class="inline-code">WebappTemplateLoader</code>:
- Template updating didn't worked correctly with Tomcat due the
- caching of resources. Now
- <code class="inline-code">WebappTemplateLoader</code> tries to access the
- resources directly as <code class="inline-code">File</code>, if it is
- possible, thus bypasses the caching.</p>
- </li>
-
- <li>
- <p>Bugfix: Templates loaded with
- <code class="inline-code">MultiTemplateLoader</code> subclasses was removed
- from the template cache after the template update delay has
- elapsed (5 seconds by default) even if the template file was
- unchanged. This can cause lot of extra load for a high-traffic
- server if you have many templates or if the template update
- delay was set to 0 second.</p>
- </li>
-
- <li>
- <p>Bugfix: Undefined variables in hash and sequence
- constructors (as <code class="inline-code">[a, b, c]</code>) didn't caused
- errors.</p>
- </li>
- </ul>
-
-
-
-
-
-
-
-<h3 class="content-header header-section3" id="autoid_268">Differences between the Preview 1 and Preview 2
- releases</h3>
-
-
- <ul>
- <li>
- <p>All 16-bit Unicode letters and numbers are allowed in
- identifiers, as well as the <code class="inline-code">$</code> character (as
- in Java programming language). Thus you can use accented
- letters, Arabic letters, Chinese letters, etc. as identifiers
- in templates</p>
- </li>
-
- <li>
- <p>Macros now can create loop variables for the nested
- content. For more information <a href="dgui_misc_userdefdir.html#dgui_misc_userdefdir_loopvar">read
- this</a>.</p>
- </li>
-
- <li>
- <p>New directives: <code class="inline-code">t</code>,
- <code class="inline-code">rt</code> and <code class="inline-code">lt</code> directives
- allow you to do explicit white-space removal in extreme FTL
- applications. For more information read <a href="ref_directive_t.html#ref.directive.t">the reference</a>.</p>
- </li>
-
- <li>
- <p>The syntax of assignment-with-namespace has changed from
- <code class="inline-code"><#assign foo=123 namespace=myLib></code>) to
- <code class="inline-code"><#assign foo=123 in myLib></code>, since the
- previous syntax was confusing because its similarity to a
- bulk-assignment.</p>
- </li>
-
- <li>
- <p>Bulk assignments (as <code class="inline-code"><#assign x=1, y=2,
- z=3></code>) no longer need colon to separate the
- assignments (as <code class="inline-code"><#assign x=1 y=2
- z=3></code>), although it is still allowed to preserve
- backward compatibility.</p>
- </li>
-
- <li>
- <p>Positional parameter passing is supported for macro
- calls as shorthand form of normal named parameter passing. For
- more details read <a href="ref_directive_userDefined.html#ref_directive_userDefined_positionalParam">read the
- reference</a>.</p>
- </li>
-
- <li>
- <p>New built-in, <code class="inline-code">namespace</code>, to get the
- namespace of the currently executing macro.</p>
- </li>
-
- <li>
- <p><code class="inline-code">TransformControl</code> interface (was
- experimental earlier): If the <code class="inline-code">Writer</code>
- returned by
- <code class="inline-code">TemplateTransformModel.getWriter</code> implements
- this interface, it can instruct the engine to skip or to
- repeat evaluation of the nested content, and gets notified
- about exceptions that are thrown during the nested content
- evaluation. For more information please read the API
- documentation.</p>
- </li>
-
- <li>
- <p>Jython wrapper can now wrap arbitrary Java objects, not
- only <code class="inline-code">PyObject</code>-s. If an object is passed to
- the wrapper that is neither a
- <code class="inline-code">TemplateModel</code>, nor a
- <code class="inline-code">PyObject</code>, it is first coerced into a
- <code class="inline-code">PyObject</code> using Jython's own wrapping
- machinery, and then wrapped into a
- <code class="inline-code">TemplateModel</code> as any other
- <code class="inline-code">PyObject</code>.</p>
- </li>
-
- <li>
- <p>Some cleanups in the <code class="inline-code">Environment</code>
- API.</p>
- </li>
-
- <li>
- <p>The Web application related examples has been
- replaced.</p>
- </li>
-
- <li>
- <p>Bugfix: Templates loaded with
- <code class="inline-code">URLTemplateLoader</code> subclasses was removed
- from the template cache after the template update delay has
- elapsed (5 seconds by default) even if the template file was
- unchanged. This can cause lot of extra load for a high-traffic
- server if you have many templates or if the template update
- delay was set to 0 second.</p>
- </li>
-
- <li>
- <p>Bugfix: <code class="inline-code">FreeMarkerServlet</code> has thrown
- <code class="inline-code">ServletException</code> even if a debug
- <code class="inline-code">TemplateException</code> handler was in use (so
- you may got Error 500 page instead of debug
- information).</p>
- </li>
- </ul>
-
- <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_2_1.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_1_5.html"><span>Next</span></a></div></div></div></div> </div>
- </div>
-<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
-Last generated:
-<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
-<p class="copyright">
-� <span itemprop="copyrightYear">1999</span>\u20132017
-<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
-</div></div></div></body>
-</html>
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/a4004324/builds/2.3.26-nightly/versions_2_2_1.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_2_1.html b/builds/2.3.26-nightly/versions_2_2_1.html
deleted file mode 100644
index 02c3c3d..0000000
--- a/builds/2.3.26-nightly/versions_2_2_1.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<!doctype html>
-<!-- Generated by FreeMarker/Docgen from DocBook -->
-<html lang="en" class="page-type-section">
-<head prefix="og: http://ogp.me/ns#">
-<meta charset="utf-8">
-<title>2.2.1 - Apache FreeMarker Manual</title>
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="format-detection" content="telephone=no">
-<meta property="og:site_name" content="Apache FreeMarker Manual">
-<meta property="og:title" content="2.2.1">
-<meta property="og:locale" content="en_US">
-<meta property="og:url" content="http://freemarker.org/docs/versions_2_2_1.html">
-<link rel="canonical" href="http://freemarker.org/docs/versions_2_2_1.html">
-<link rel="icon" href="favicon.png" type="image/png">
-<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
-<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
-<script>
-(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-ga('create', 'UA-55420501-1', 'auto');
-ga('send', 'pageview');
-</script>
-</head>
-<body itemscope itemtype="https://schema.org/Code">
- <meta itemprop="url" content="http://freemarker.org/docs/">
- <meta itemprop="name" content="Apache FreeMarker Manual">
-
- <!--[if lte IE 9]>
- <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
- <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner"> <img itemprop="image" src="logo.png" alt="FreeMarker">
-</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_2_1.html"><span itemprop="name">2.2.1</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div> <div class="main-content site-width">
- <div class="content-wrapper">
- <div id="table-of-contents-wrapper" class="col-left">
- <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.2.1"];</script>
- <script src="toc.js?1489402528979"></script>
- <script src="docgen-resources/main.min.js?1489402528979"></script>
- </div>
-<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_2_2.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2.html"><span>Next</span></a></div><div class="title-wrapper">
-<h1 class="content-header header-section1" id="versions_2_2_1" itemprop="headline">2.2.1</h1>
-</div></div><div class="page-menu">
-<div class="page-menu-title">Page Contents</div>
-<ul><li><a class="page-menu-link" href="#autoid_258" data-menu-target="autoid_258">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_259" data-menu-target="autoid_259">Changes on the Java side</a></li></ul> </div><p>Date of release: 2003-04-11</p><p>This version introduces important new features, such as the
- native FTL date/time type, and the auto-include and auto-import
- settings.</p><p>The date/time support is experimental, but we hope it will not
- substantially change. We would like to label it as final ASAP, so we
- urge everybody to send feedback on this topic to the mailing
- lists.</p>
-
-
-
-
-<h2 class="content-header header-section2" id="autoid_258">Changes on the FTL side</h2>
-
-
- <ul>
- <li>
- <p>New scalar type: date. For more information read: <a href="dgui_datamodel_types.html#dgui_datamodel_scalar">Template Author's Guide/Values, Types/The types/Scalars</a>, <a href="dgui_datamodel_types.html#dgui_datamodel_scalar">Template Author's Guide/Values, Types/The types/Scalars</a>, <a href="dgui_template_valueinsertion.html#dgui_template_valueinserion_universal_date">interpolation</a>,
- <a href="ref_builtins_date.html#ref_builtin_string_for_date">?string built-in for
- dates</a></p>
- </li>
- </ul>
-
-
-
-
-
-<h2 class="content-header header-section2" id="autoid_259">Changes on the Java side</h2>
-
-
- <ul>
- <li>
- <p>New <code class="inline-code">TemplateModel</code> subinterface:
- <code class="inline-code">TemplateDateModel</code>. For more information read
- <a href="pgui_datamodel_scalar.html">Programmer's Guide/The Data Model/Scalars</a></p>
- </li>
-
- <li>
- <p>auto-include and auto-import: With these new configuration
- level settings, you can include and import commonly used
- templates (usually collection of macro definitions) at the top
- of all templates, without actually typing <code class="inline-code"><#include
- <em class="code-color">...</em>></code> or
- <code class="inline-code"><#import
- <em class="code-color">...</em>></code> into the templates
- again and again. For more information please read the Java API
- documentation of <code class="inline-code">Configuration</code></p>
- </li>
-
- <li>
- <p>New template method:
- <code class="inline-code">createProcessingEnvironment</code>. This method
- makes it possible for you to do some special initialization on
- the <a href="gloss.html#gloss.environment"><code>Environment</code></a>
- before template processing, or to read the environment after
- template processing. For more information please read the Java
- API documentation.</p>
- </li>
-
- <li>
- <p>Changes to <code class="inline-code">freemarker.ext.beans</code>
- package: <code class="inline-code">BeanModel</code>,
- <code class="inline-code">MapModel</code>, and
- <code class="inline-code">ResourceModel</code> now implement
- <code class="inline-code">TemplateHashModelEx</code>.</p>
- </li>
-
- <li>
- <p>Bugfix:
- <code class="inline-code">Configurable.setSettings(Properties)</code> didn't
- removed redundant spaces/tabs at the end of property
- values.</p>
- </li>
- </ul>
- <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_2_2.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2.html"><span>Next</span></a></div></div></div></div> </div>
- </div>
-<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
-Last generated:
-<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
-<p class="copyright">
-� <span itemprop="copyrightYear">1999</span>\u20132017
-<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
-</div></div></div></body>
-</html>
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/a4004324/builds/2.3.26-nightly/versions_2_2_2.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_2_2.html b/builds/2.3.26-nightly/versions_2_2_2.html
deleted file mode 100644
index 395c9e8..0000000
--- a/builds/2.3.26-nightly/versions_2_2_2.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!doctype html>
-<!-- Generated by FreeMarker/Docgen from DocBook -->
-<html lang="en" class="page-type-section">
-<head prefix="og: http://ogp.me/ns#">
-<meta charset="utf-8">
-<title>2.2.2 - Apache FreeMarker Manual</title>
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="format-detection" content="telephone=no">
-<meta property="og:site_name" content="Apache FreeMarker Manual">
-<meta property="og:title" content="2.2.2">
-<meta property="og:locale" content="en_US">
-<meta property="og:url" content="http://freemarker.org/docs/versions_2_2_2.html">
-<link rel="canonical" href="http://freemarker.org/docs/versions_2_2_2.html">
-<link rel="icon" href="favicon.png" type="image/png">
-<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
-<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
-<script>
-(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-ga('create', 'UA-55420501-1', 'auto');
-ga('send', 'pageview');
-</script>
-</head>
-<body itemscope itemtype="https://schema.org/Code">
- <meta itemprop="url" content="http://freemarker.org/docs/">
- <meta itemprop="name" content="Apache FreeMarker Manual">
-
- <!--[if lte IE 9]>
- <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
- <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner"> <img itemprop="image" src="logo.png" alt="FreeMarker">
-</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_2_2.html"><span itemprop="name">2.2.2</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div> <div class="main-content site-width">
- <div class="content-wrapper">
- <div id="table-of-contents-wrapper" class="col-left">
- <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.2.2"];</script>
- <script src="toc.js?1489402528979"></script>
- <script src="docgen-resources/main.min.js?1489402528979"></script>
- </div>
-<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_2_3.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_1.html"><span>Next</span></a></div><div class="title-wrapper">
-<h1 class="content-header header-section1" id="versions_2_2_2" itemprop="headline">2.2.2</h1>
-</div></div><p>Date of release: 2003-05-02</p><p>Bugfix release.</p>
-
-
-
-
-<h2 class="content-header header-section2" id="autoid_257">Changes on the Java side</h2>
-
-
- <ul>
- <li>
- <p>Bugfix: The <code class="inline-code">_text</code> key of the
- <code class="inline-code">freemarker.ext.xml.NodeListModel</code> was not
- returning the text of the element when used with W3C DOM
- trees.</p>
- </li>
-
- <li>
- <p>The classes are now built against JDK 1.2.2 classes,
- ensuring the binary compatibility of FreeMarker distribution
- with JDK 1.2.</p>
- </li>
- </ul>
- <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_2_3.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_1.html"><span>Next</span></a></div></div></div></div> </div>
- </div>
-<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
-Last generated:
-<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
-<p class="copyright">
-� <span itemprop="copyrightYear">1999</span>\u20132017
-<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
-</div></div></div></body>
-</html>