| <!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.3.11 - 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.3.11"> |
| <meta property="og:locale" content="en_US"> |
| <meta property="og:url" content="https://freemarker.apache.org/docs/versions_2_3_11.html"> |
| <link rel="canonical" href="https://freemarker.apache.org/docs/versions_2_3_11.html"> |
| <link rel="icon" href="favicon.png" type="image/png"> |
| <link rel="stylesheet" type="text/css" href="https://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?1707770044859"> |
| <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/cookie-bar/cookiebar-latest.min.js"></script> |
| </head> |
| <body itemscope itemtype="https://schema.org/Code"> |
| <meta itemprop="url" content="https://freemarker.apache.org/docs/"> |
| <meta itemprop="name" content="Apache FreeMarker Manual"> |
| |
| <!--[if lte IE 9]> |
| <div class="oldBrowserWarning" style="display: block"> |
| Unsupported web browser - Use a modern browser to view this website! |
| </div> |
| <![endif]--> <div class="oldBrowserWarning"> |
| Unsupported web browser - Use a modern browser to view this website! |
| </div> |
| <div class="header-top-bg"><div class="site-width header-top"><div id="hamburger-menu" role="button"></div> <div class="logo"> |
| <a href="https://freemarker.apache.org" role="banner"><img itemprop="image" src="logo.png" alt="FreeMarker"></a> </div> |
| <ul class="tabs"><li><a href="https://freemarker.apache.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="https://freemarker.apache.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/projects/FREEMARKER" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="https://freemarker.apache.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="search-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"> <div class="breadcrumbs"> |
| <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="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_11.html"><span itemprop="name">2.3.11</span></a></li></ul> </div> |
| <div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul><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.3.11"];</script> |
| <script src="toc.js?1707770044859"></script> |
| <script src="docgen-resources/main.min.js?1707770044859"></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_3_12.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_10.html"><span>Next</span></a></div><div class="title-wrapper"> |
| <h1 class="content-header header-section1" id="versions_2_3_11" itemprop="headline">2.3.11</h1> |
| </div></div><div class="page-menu"> |
| <div class="page-menu-title">Page Contents</div> |
| <ul><li><a class="page-menu-link" href="#autoid_201" data-menu-target="autoid_201">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_202" data-menu-target="autoid_202">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_203" data-menu-target="autoid_203">Documentation changes</a></li></ul> </div><p>Date of release: 2007-12-04</p><p>This release contains several performance and usability |
| improvements.</p> |
| |
| |
| |
| |
| <h2 class="content-header header-section2" id="autoid_201">Changes on the FTL side</h2> |
| |
| |
| <ul> |
| <li> |
| <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=1687248&group_id=794&atid=100794">[1687248]</a> |
| <strong>Warning! This bugfix may breaks some |
| templates!</strong> Fixed the bugs of the <a href="ref_builtins_number.html#ref_builtin_c"><code>c</code> built-in</a> |
| (<code class="inline-code">?c</code>) that sometimes caused whole numbers to |
| be formatted with ".0" at the end (like: 1.0), and |
| caused numbers sometimes formatted to exponential form (like |
| 4E-20). From now whole numbers will never use decimal dot (not |
| even if the wrapped number is a <code class="inline-code">double</code>; |
| remember, the template language knows only a single numerical |
| type), and exponential form will never be used either. Also, the |
| maximum number of digits after the decimal dot was limited to |
| 16, so numbers smaller than 1E-16 will be shown as 0.</p> |
| </li> |
| </ul> |
| |
| |
| |
| |
| |
| <h2 class="content-header header-section2" id="autoid_202">Changes on the Java side</h2> |
| |
| |
| <ul> |
| <li> |
| <p>FreeMarker now has much better JSP 2.0 and JSP 2.1 |
| compliance. Most notably, the JSP 2.0 |
| <code class="inline-code">SimpleTag</code> interface is now supported. |
| Additionally, even when run in an environment that doesn't have |
| its own JSP implementation, the FreeMarker JSP runtime will make |
| available its own implementation of |
| <code class="inline-code">JspFactory</code> and |
| <code class="inline-code">JspEngineInfo</code> to tags when JSP 2.0 API JAR is |
| available in classpath, as well as an implementation of |
| <code class="inline-code">JspApplicationContext</code> when JSP 2.1 API JAR is |
| available in classpath.</p> |
| </li> |
| |
| <li> |
| <p>A new model interface, |
| <code class="inline-code">TemplateDirectiveModel</code> provides an easier |
| paradigm for implementing user-defined directives than |
| <code class="inline-code">TemplateTransformModel</code> did previously. |
| <code class="inline-code">TemplateTransformModel</code> will be |
| deprecated.</p> |
| </li> |
| |
| <li> |
| <p>FreeMarker now finds the Xalan-based XPath support |
| included in Sun JRE/JDK 5 and 6, so no separate Xalan jar is |
| required for the XPath support to work. (However, we recommend |
| Jaxen over Xalan, as the FreeMarker XPath support is more |
| complete with that. Of course for that the Jaxen jar is still |
| needed.)</p> |
| </li> |
| |
| <li> |
| <p>Wrapping performance of <code class="inline-code">BeansWrapper</code> |
| has been significantly improved by eliminating repetitive |
| execution of various class tests.</p> |
| |
| <p><strong>Note for |
| <code class="inline-code">BeansWrapper</code> customizers:</strong> |
| subclasses of <code class="inline-code">BeansWrapper</code> that previously |
| overrode <code class="inline-code">getInstance(Object, ModelFactory)</code> |
| method should now instead override |
| <code class="inline-code">getModelFactory(Class)</code> to take advantage of |
| this improvement. Overriding the old method still works, but it |
| will not take advantage of the performance improvement.</p> |
| </li> |
| |
| <li> |
| <p>Memory footprint of a wrapper created by |
| <code class="inline-code">BeansWrapper</code> has been reduced (by a size of |
| one default-sized <code class="inline-code">HashMap</code>) until methods or |
| indexed properties are accessed on it (simple properties can be |
| accessed without increasing memory footprint).</p> |
| </li> |
| |
| <li> |
| <p>Rhino objects can be used in templates as scalars, |
| numbers, and booleans, following the JavaScript conversion |
| semantics for these types.</p> |
| </li> |
| |
| <li> |
| <p><code class="inline-code">.data_model</code> is now a |
| <code class="inline-code">TemplatHashModelEx</code> when possible. This means |
| that the list of the data-model variable names usually can be |
| get with <code class="inline-code">.data_model?keys</code>.</p> |
| </li> |
| |
| <li> |
| <p><code class="inline-code">FileTemplateLoader</code> can now optionally |
| allow following symlinks that point out of the base directory. |
| It is disabled by default for backward compatibility.</p> |
| </li> |
| |
| <li> |
| <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=1670887&group_id=794&atid=100794">[1670887]</a> |
| <code class="inline-code">TaglibFactory</code> taglib matching did not follow |
| JSP 1.2 FCS.</p> |
| </li> |
| |
| <li> |
| <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=1754320&group_id=794&atid=100794">[1754320]</a> |
| Bug in <code class="inline-code">setXPathSupportClass</code> prevented |
| plugging in a user-supplied <code class="inline-code">XPathSupport</code> |
| implementation.</p> |
| </li> |
| |
| <li> |
| <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=1803298&group_id=794&atid=100794">[1803298]</a> |
| Parser error while parsing macro with loop variables</p> |
| </li> |
| |
| <li> |
| <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=1824122&group_id=794&atid=100794">[1824122]</a> |
| Loading templates from JAR files could lead to leaking of file |
| handles (due to a bug in the Java API implementation of |
| Sun).</p> |
| </li> |
| |
| <li> |
| <p>Bug fixed: Cached template is now removed from the cache |
| if the re-loading of the modified template file fails, so no |
| staled template is served.</p> |
| </li> |
| </ul> |
| |
| |
| |
| |
| |
| <h2 class="content-header header-section2" id="autoid_203">Documentation changes</h2> |
| |
| |
| <ul> |
| <li> |
| <p>Substantial reworkings in the Template Authors's Guide |
| (which was previously called Designer's Guide), especially in |
| the Getting Started section.</p> |
| </li> |
| |
| <li> |
| <p><code class="inline-code">#{...}</code> is documented as deprected |
| construct from now.</p> |
| </li> |
| |
| <li> |
| <p>The "transform" term is now removed from the |
| documentation. Instead the more general "user-defined directive" |
| term is used, which encompasses macros, |
| <code class="inline-code">TemplateTransformModel</code>-s and the new |
| <code class="inline-code">TemplateDirectiveModel</code>-s, which are just |
| different ways of implementing user-defined directives.</p> |
| </li> |
| |
| <li> |
| <p>Some more minor improvements in the Manual.</p> |
| </li> |
| </ul> |
| <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_12.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_10.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="https://freemarker.apache.org/">What is FreeMarker?</a></li><li><a href="https://freemarker.apache.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="app_faq.html">FAQ</a></li><li><a itemprop="license" href="app_license.html">License</a></li><li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy policy</a></li></ul></div><div class="column"><h3 class="column-header">Often used / Reference</h3><ul><li><a href="https://try.freemarker.apache.org/">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><li><a href="api/freemarker/core/Configurable.html#setSetting-java.lang.String-java.lang.String-">Configuration settings</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href="https://github.com/apache/freemarker">Github project page</a></li><li><a href="https://issues.apache.org/jira/projects/FREEMARKER">Report a bug</a></li><li><a href="https://freemarker.apache.org/report-security-vulnerabilities.html">Report security vulnerability</a></li><li><a href="https://stackoverflow.com/questions/ask?tags=freemarker">Get help on StackOverflow</a></li><li><a href="https://twitter.com/freemarker">Announcements on Twitter</a></li><li><a href="https://freemarker.apache.org/mailing-lists.html">Discuss on mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/apache/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="https://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="2024-02-12T20:34:04Z" title="Monday, February 12, 2024 at 8:34:04 PM Greenwich Mean Time">2024-02-12 20:34:04 GMT</time>, for Freemarker 2.3.32 </p> |
| <p class="copyright"> |
| © <span itemprop="copyrightYear">1999</span>–2024 |
| <a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="https://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners. </p> |
| </div></div></div></body> |
| </html> |