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>â2017 -<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>â2017 -<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>â2017 -<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>
