http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/a4004324/builds/2.3.26-nightly/ref_directive_if.html ---------------------------------------------------------------------- diff --git a/builds/2.3.26-nightly/ref_directive_if.html b/builds/2.3.26-nightly/ref_directive_if.html deleted file mode 100644 index 99de82d..0000000 --- a/builds/2.3.26-nightly/ref_directive_if.html +++ /dev/null @@ -1,196 +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>if, else, elseif - 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="if, else, elseif"> -<meta property="og:locale" content="en_US"> -<meta property="og:url" content="http://freemarker.org/docs/ref_directive_if.html"> -<link rel="canonical" href="http://freemarker.org/docs/ref_directive_if.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="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step- 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_if.html"><span itemprop="name">if, else, elseif</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","Template Language Reference","Directive Reference","if, else, elseif"];</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="ref_directive_global.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_import.html"><span>Next</span></a></div><div class="title-wrapper"> -<h1 class="content-header header-section1" id="ref_directive_if" itemprop="headline">if, else, elseif</h1> -</div></div><div class="page-menu"> -<div class="page-menu-title">Page Contents</div> -<ul><li><a class="page-menu-link" href="#autoid_94" data-menu-target="autoid_94">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_95" data-menu-target="autoid_95">Description</a></li></ul> </div><a name="ref.directive.if"></a><a name="ref.directive.else"></a><a name="ref.directive.elseif"></a> - - - - -<h2 class="content-header header-section2" id="autoid_94">Synopsis</h2> - - - -<pre class="metaTemplate"> -<code class="inline-code"><#if <em class="code-color">condition</em>> - <em class="code-color">...</em> -<#elseif <em class="code-color">condition2</em>> - <em class="code-color">...</em> -<#elseif <em class="code-color">condition3</em>> - <em class="code-color">...</em> -<em class="code-color">...</em> -<#else> - <em class="code-color">...</em> -</#if></code> -</pre> - - - <p>Where:</p> - - <ul> - <li> - <code class="inline-code"><em class="code-color">condition</em></code>, - <code class="inline-code"><em class="code-color">condition2</em></code>, - ...etc.: Expression evaluates to a boolean value. - </li> - </ul> - - <p>The <code class="inline-code">elseif</code>-s and the - <code class="inline-code">else</code> are optional.</p> - - <p>Camel case name variant: <code class="inline-code">elseIf</code></p> - - - - - -<h2 class="content-header header-section2" id="autoid_95">Description</h2> - - - <p>You can use <code class="inline-code">if</code>, <code class="inline-code">elseif</code> - and <code class="inline-code">else</code> directives to conditionally skip a - section of the template. The - <code class="inline-code"><em class="code-color">condition</em></code>-s must - evaluate to a boolean value, or else an error will abort template - processing. The <code class="inline-code">elseif</code>-s and - <code class="inline-code">else</code>-s must occur inside <code class="inline-code">if</code> - (that is, between the <code class="inline-code">if</code> start-tag and end-tag). - The <code class="inline-code">if</code> can contain any number of - <code class="inline-code">elseif</code>-s (including 0) and at the end optionally - one <code class="inline-code">else</code>. Examples:</p> - - <p><code class="inline-code">if</code> with 0 <code class="inline-code">elseif</code> and no - <code class="inline-code">else</code>:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#if x == 1> - x is 1 -</#if></pre></div> - - <p><code class="inline-code">if</code> with 0 <code class="inline-code">elseif</code> and - <code class="inline-code">else</code>:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#if x == 1> - x is 1 -<#else> - x is not 1 -</#if></pre></div> - - <p><code class="inline-code">if</code> with 2 <code class="inline-code">elseif</code> and no - <code class="inline-code">else</code>:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#if x == 1> - x is 1 -<#elseif x == 2> - x is 2 -<#elseif x == 3> - x is 3 -</#if></pre></div> - - <p><code class="inline-code">if</code> with 3 <code class="inline-code">elseif</code> and - <code class="inline-code">else</code>:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#if x == 1> - x is 1 -<#elseif x == 2> - x is 2 -<#elseif x == 3> - x is 3 -<#elseif x == 4> - x is 4 -<#else> - x is not 1 nor 2 nor 3 nor 4 -</#if></pre></div> - - <p>To see more about boolean expressions, see: <a href="dgui_template_exp.html">Template Author's Guide/The Template/Expressions</a>.</p> - - <p>You can nest <code class="inline-code">if</code> directives (of - course):</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#if x == 1> - x is 1 - <#if y == 1> - and y is 1 too - <#else> - but y is not - </#if> -<#else> - x is not 1 - <#if y < 0> - and y is less than 0 - </#if> -</#if></pre></div> - - <div class="callout note"> - <strong class="callout-label">Note:</strong> - - <p>When you want to test if <code class="inline-code">x > 0</code> or - <code class="inline-code">x >= 0</code>, writing <code class="inline-code"><#if x > - 0></code> and <code class="inline-code"><#if x >= 0></code> is - WRONG, as the first <code class="inline-code">></code> will close the - <code class="inline-code">#if</code> tag. To work that around, write - <code class="inline-code"><#if x gt 0></code> or <code class="inline-code"><#if gte - 0></code>. Also note that if the comparison occurs inside - parentheses, you will have no such problem, like <code class="inline-code"><#if - foo.bar(x > 0)></code> works as expected.</p> - </div> - - <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_global.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_import.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/ref_directive_import.html ---------------------------------------------------------------------- diff --git a/builds/2.3.26-nightly/ref_directive_import.html b/builds/2.3.26-nightly/ref_directive_import.html deleted file mode 100644 index 965f033..0000000 --- a/builds/2.3.26-nightly/ref_directive_import.html +++ /dev/null @@ -1,153 +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>import - 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="import"> -<meta property="og:locale" content="en_US"> -<meta property="og:url" content="http://freemarker.org/docs/ref_directive_import.html"> -<link rel="canonical" href="http://freemarker.org/docs/ref_directive_import.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="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step- 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_import.html"><span itemprop="name">import</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","Template Language Reference","Directive Reference","import"];</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="ref_directive_if.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_include.html"><span>Next</span></a></div><div class="title-wrapper"> -<h1 class="content-header header-section1" id="ref_directive_import" itemprop="headline">import</h1> -</div></div><div class="page-menu"> -<div class="page-menu-title">Page Contents</div> -<ul><li><a class="page-menu-link" href="#autoid_96" data-menu-target="autoid_96">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_97" data-menu-target="autoid_97">Description</a></li></ul> </div><a name="ref.directive.import"></a> - - - - -<h2 class="content-header header-section2" id="autoid_96">Synopsis</h2> - - - -<pre class="metaTemplate"><code class="inline-code"><#import <em class="code-color">path</em> as <em class="code-color">hash</em>></code> -</pre> - - - <p>Where:</p> - - <ul> - <li> - <code class="inline-code"><em class="code-color">path</em></code>: The - path of a template. This is an expression that evaluates to a - string. (With other words, it doesn't have to be a fixed string, - it can also be something like, for example, - <code class="inline-code">profile.baseDir + "/menu.ftl"</code>.) - </li> - - <li> - <code class="inline-code"><em class="code-color">hash</em></code>: The - unquoted name of hash variable by which you can access the - namespace. Not an expression. (If you have to import into a - dynamically constructed name, you have to use <a href="app_faq.html#faq_assign_to_dynamic_variable_name">this - trick</a>.) - </li> - </ul> - - - - - -<h2 class="content-header header-section2" id="autoid_97">Description</h2> - - - <p>Imports a library. That is, it creates a new empty namespace, - and then executes the template given with - <code class="inline-code"><em class="code-color">path</em></code> parameter in that - namespace so the template populates the namespace with variables - (macros, functions, ...etc.). Then it makes the newly created - namespace available to the caller with a hash variable. The hash - variable will be created as a plain variable in the namespace used - by the caller of <code class="inline-code">import</code> (as if you would create - it with <code class="inline-code">assign</code> directive), with the name given - with the <code class="inline-code"><em class="code-color">hash</em></code> - parameter. If the import happens in the namespace of the main - template, the hash variable is also created in the global - namespace.</p> - - <p>If you call <code class="inline-code">import</code> with the same - <code class="inline-code"><em class="code-color">path</em></code> for multiple - times, it will create the namespace and run the template for the - very first call of <code class="inline-code">import</code> only. The later calls - will just create a hash by which you can access the - <em>same</em> namespace.</p> - - <p>The output printed by the imported template will be ignored - (will not be inserted at the place of importing). The template is - executed to populate the namespace with variables, and not to write - to the output.</p> - - <p>Example:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#import "/libs/mylib.ftl" as my> - -<@my.copyright date="1999-2002"/></pre></div> - - <p>The <code class="inline-code"><em class="code-color">path</em></code> - parameter can be a relative path like <code class="inline-code">"foo.ftl"</code> - and <code class="inline-code">"../foo.ftl"</code>, or an absolute like - <code class="inline-code">"/foo.ftl"</code>. Relative paths are relative to the - directory of the template that uses the <code class="inline-code">import</code> - directive. Absolute paths are relative to a base (often referred as - the ''root directory of the templates'') that the programmer defines - when he configures FreeMarker.</p> - - <p>Always use <code class="inline-code">/</code> (slash) to separate path - components, never <code class="inline-code">\</code> (backslash). If you are - loading templates from your local file system and it uses - backslashes (like under. Windows), FreeMarker will convert them - automatically.</p> - - <p>Like with the <code class="inline-code">include</code> directive, <a href="ref_directive_include.html#ref_directive_include_acquisition">acquisition</a> and - <a href="ref_directive_include.html#ref_directive_include_localized">localized - lookup</a> may be used for resolving the path.</p> - - <p><span class="marked-for-programmers">Note, that it is possible to - automatically do the commonly used imports for all templates, with - the "auto imports" setting of - <code class="inline-code">Configuration</code>.</span></p> - - <p>If you are new to namespaces, you should read: <a href="dgui_misc_namespace.html">Template Author's Guide/Miscellaneous/Namespaces</a></p> - <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_if.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_include.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/ref_directive_include.html ---------------------------------------------------------------------- diff --git a/builds/2.3.26-nightly/ref_directive_include.html b/builds/2.3.26-nightly/ref_directive_include.html deleted file mode 100644 index ebfb785..0000000 --- a/builds/2.3.26-nightly/ref_directive_include.html +++ /dev/null @@ -1,449 +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>include - 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="include"> -<meta property="og:locale" content="en_US"> -<meta property="og:url" content="http://freemarker.org/docs/ref_directive_include.html"> -<link rel="canonical" href="http://freemarker.org/docs/ref_directive_include.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="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step- 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_include.html"><span itemprop="name">include</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","Template Language Reference","Directive Reference","include"];</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="ref_directive_import.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_list.html"><span>Next</span></a></div><div class="title-wrapper"> -<h1 class="content-header header-section1" id="ref_directive_include" itemprop="headline">include</h1> -</div></div><div class="page-menu"> -<div class="page-menu-title">Page Contents</div> -<ul><li><a class="page-menu-link" href="#autoid_98" data-menu-target="autoid_98">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_99" data-menu-target="autoid_99">Description</a><ul><li><a class="page-menu-link" href="#ref_directive_include_acquisition" data-menu-target="ref_directive_include_acquisition">Using acquisition</a></li><li><a class="page-menu-link" href="#ref_directive_include_localized" data-menu-target="ref_directive_include_localized">Localized lookup</a></li></ul></li></ul> </div><a name="ref.directive.include"></a> - - - - -<h2 class="content-header header-section2" id="autoid_98">Synopsis</h2> - - - -<pre class="metaTemplate"> -<code class="inline-code"><#include <em class="code-color">path</em>></code> -or -<code class="inline-code"><#include <em class="code-color">path</em> <em class="code-color">options</em>></code> -</pre> - - - <p>Where:</p> - - <ul> - <li> - <code class="inline-code"><em class="code-color">path</em></code>: The - path of the file to include; an expression that evaluates to a - string. (With other words, it doesn't have to be a fixed string, - it can also be something like, for example, - <code class="inline-code">profile.baseDir + "/menu.ftl"</code>.) - </li> - - <li> - <code class="inline-code"><em class="code-color">options</em></code>: One - or more of these: - <code class="inline-code">encoding=<em class="code-color">encoding</em></code>, - <code class="inline-code">parse=<em class="code-color">parse</em></code> - - <ul> - <li> - <code class="inline-code"><em class="code-color">encoding</em></code>: - Expression evaluates to string - </li> - - <li> - <code class="inline-code"><em class="code-color">parse</em></code>: - Expression evaluates to boolean (also accepts a few string - values for backward compatibility) - </li> - - <li> - <code class="inline-code"><em class="code-color">ignore_missing</em></code>: - Expression evaluates to boolean - </li> - </ul> - </li> - </ul> - - - - - -<h2 class="content-header header-section2" id="autoid_99">Description</h2> - - - <p>You can use it to insert another FreeMarker template file - (specified by the <code class="inline-code"><em class="code-color">path</em></code> - parameter) into your template. The output from the included template - is inserted at the point where the <code class="inline-code">include</code> tag - occurs. The included file shares the variables with the including - template, similarly like if it was copy-pasted into it. The - <code class="inline-code">include</code> directive is not really replaced by the - content of the included file, instead it processes the included file - each time when FreeMarker reaches the <code class="inline-code">include</code> - directive in the course of template processing. So for example if - the <code class="inline-code">include</code> is inside a <code class="inline-code">list</code> - loop, you can specify different file names in each cycle.</p> - - <div class="callout note"> - <strong class="callout-label">Note:</strong> - - <p>This directive is not be confused with the JSP (Servlet) - include, as it doesn't involve the Servlet container at all, just - processes another FreeMarker template, without "leaving" - FreeMarker. Regarding how to do a "JSP include" <a href="app_faq.html#faq_servlet_include">read this...</a></p> - </div> - - - <p>The <code class="inline-code"><em class="code-color">path</em></code> - parameter can be a relative path like <code class="inline-code">"foo.ftl"</code> - and <code class="inline-code">"../foo.ftl"</code>, or an absolute like - <code class="inline-code">"/foo.ftl"</code>. Relative paths are relative to the - directory of the template that contains the - <code class="inline-code">import</code> directive. Absolute paths are relative to - a base (often referred as the 'root directory of the templates') - that the programmer defines when he configures FreeMarker.</p> - - <div class="callout note"> - <strong class="callout-label">Note:</strong> - - <p>This is different than the way it worked prior FreeMarker - 2.1, where the path was always absolute. To preserve the old - behavior, enable the classic compatible mode in the - <code class="inline-code">Configuration</code> object.</p> - </div> - - - <p>Always use <code class="inline-code">/</code> (slash) to separate path - components, never <code class="inline-code">\</code> (backslash). Even if you are - loading templates from your local file system and it uses - backslashes (like under. Windows), use <code class="inline-code">/</code>.</p> - - <p>Example:</p> - - <p>Assume /common/copyright.ftl contains:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template">Copyright 2001-2002 ${me}<br> -All rights reserved.</pre></div> - - <p>Then this:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#assign me = "Juila Smith"> -<h1>Some test</h1> -<p>Yeah. -<hr> -<strong><#include "/common/copyright.ftl"></strong></pre></div> - - <p>will output this:</p> - - - -<div class="code-wrapper"><pre class="code-block code-output"><h1>Some test</h1> -<p>Yeah. -<hr> -<strong>Copyright 2001-2002 Juila Smith -All rights reserved.</strong></pre></div> - - <p>The supported - <code class="inline-code"><em class="code-color">options</em></code> are:</p> - - <ul> - <li> - <p><code class="inline-code">parse</code>: If it is - <code class="inline-code">true</code>, then the included file will be parsed - as FTL, otherwise the whole file will be considered as simple - text (i.e, no FreeMarker constructs will be searched in it). If - you omit this option, then it defaults to - <code class="inline-code">true</code>.</p> - </li> - - <li> - <p><code class="inline-code">encoding</code>: The encoding (charset) of the - included template. You shouldn't use this option anymore; if - different template use different encodings, then the programmers - should associated the encoding to the templates via - <code class="inline-code">Configuration.setTemplateConfigurations(<em class="code-color">...</em>)</code>-s - (which also overrides that you specify here). If - <code class="inline-code">Configuration.setTemplateConfigurations(<em class="code-color">...</em>)</code> - doesn't specify an encoding for the included template, then the - included file inherits the encoding (the charset) of the - top-level template, unless you specify an encoding with this - option. Examples of valid names: UTF-8, ISO-8859-1, ISO-8859-2, - Shift_JIS, Big5, EUC-KR, GB2312. <span class="marked-for-programmers">Encoding names are the same as the ones - supported be java.io.InputStreamReader (as of Java API 1.3: - MIME-preferred charset names from the IANA Charset - Registry)</span></p> - </li> - - <li> - <p><code class="inline-code">ignore_missing</code>: When - <code class="inline-code">true</code>, suppresses the error when the template - to include is missing, instead <code class="inline-code"><#include - ...></code> will print nothing. When - <code class="inline-code">false</code>, the template processing will stop with - error if the template is missing. If you omit this option, then - it defaults to <code class="inline-code">false</code>.</p> - </li> - </ul> - - <p>Example:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#include "/common/navbar.html" parse=false encoding="Shift_JIS"></pre></div> - - <p><span class="marked-for-programmers">Note, that it is possible to - automatically do the commonly used inclusions for all templates, - with the "auto includes" setting of - <code class="inline-code">Configuration</code>.</span></p> - - - - - - -<h3 class="content-header header-section3" id="ref_directive_include_acquisition">Using acquisition</h3> - - - - - <p>There's a special path component represented by an asterisk - (<code class="inline-code">*</code>). It is interpreted as "this directory or - any of its parents". Therefore, if the template located in - <code class="inline-code">/foo/bar/template.ftl</code> has the following - line:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#include "*/footer.ftl"></pre></div> - - <p>then the engine will look for the template in following - locations, in this order:</p> - - <ul> - <li> - <code class="inline-code">/foo/bar/footer.ftl</code> - </li> - - <li> - <code class="inline-code">/foo/footer.ftl</code> - </li> - - <li> - <code class="inline-code">/footer.ftl</code> - </li> - </ul> - - <p>This mechanism is called <strong>acquisition</strong> and allows the designers to - place commonly included files in a parent directory, and redefine - them on a per-subdirectory basis as needed. We say that the - including template acquires the template to include from the first - parent directory that has it. Note that you can specify not only a - template name to the right of the asterisk, but a subpath as well. - I.e. if the previous template instead read:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#include "*/commons/footer.ftl"></pre></div> - - <p>then the engine would look for the template in following - locations, in this order:</p> - - <ul> - <li> - <code class="inline-code">/foo/bar/commons/footer.ftl</code> - </li> - - <li> - <code class="inline-code">/foo/commons/footer.ftl</code> - </li> - - <li> - <code class="inline-code">/commons/footer.ftl</code> - </li> - </ul> - - <p>Finally, the asterisk needn't be the first element of the - path:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#include "commons/*/footer.ftl"></pre></div> - - <p>would cause the engine to look for the template in following - locations, in this order:</p> - - <ul> - <li> - <code class="inline-code">/foo/bar/commons/footer.ftl</code> - </li> - - <li> - <code class="inline-code">/foo/bar/footer.ftl</code> - </li> - - <li> - <code class="inline-code">/foo/footer.ftl</code> - </li> - - <li> - <code class="inline-code">/footer.ftl</code> - </li> - </ul> - - <p>However, there can be at most one asterisk in the path. If - you specifying more asterisks, the template won't be found.</p> - - - - - - - -<h3 class="content-header header-section3" id="ref_directive_include_localized">Localized lookup</h3> - - - - - <p>A locale is a language and an optional country or dialect - identifier (plus also maybe a further variant identifier, like - "MAC"). Whenever a template is requested, a desired - locale is always specified (explicitly or implicitly), and - FreeMarke will try to find a variant of the template that matches - that locale. When a template includes or imports another template, - internally that will also be requested for a locale, for the - locale that the <code class="inline-code">locale</code> setting is set to, and - that's usually for the locale of the top-level template.</p> - - <p>Suppose your template was loaded with locale - <code class="inline-code">en_US</code>, which means U.S. English. When you - include another template:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#include "footer.ftl"></pre></div> - - <p>the engine will in fact look for several templates, in this - order:</p> - - <ul> - <li> - <code class="inline-code">footer_en_US.ftl</code>, - </li> - - <li> - <code class="inline-code">footer_en.ftl</code> - </li> - - <li> - <code class="inline-code">footer.ftl</code> - </li> - </ul> - - <p>and it will use the first one that exists.</p> - - <p>Note that if how (and if) FreeMarker searches the localized - variations is configurable by the programmers, so we are just - describing the default behavior here.<span class="marked-for-programmers"> You can disable localized lookup with the - <code class="inline-code">localized_lookup</code> setting - (<code class="inline-code">Configuration.setLocalizedLookup(boolean)</code>). - Also, you can define your own sequence of deduced template names - with the <code class="inline-code">template_lookup_strategy</code> setting - (<code class="inline-code">Configuration.setTemplateLookupStrategy(TemplateLookupStrategy)</code>).</span></p> - - <p>When you use both acquisition (i.e., <code class="inline-code">*</code> - step in the path) and localized template lookup, the template with - more specific locale in a parent directory takes precedence over - template with less specific locale in a child directory. Suppose - you use the following include from - <code class="inline-code">/foo/bar/template.ftl</code>:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#include "*/footer.ftl"></pre></div> - - <p>the engine will look for these templates, in this - order:</p> - - <ul> - <li> - <code class="inline-code">/foo/bar/footer_en_US.ftl</code> - </li> - - <li> - <code class="inline-code">/foo/footer_en_US.ftl</code> - </li> - - <li> - <code class="inline-code">/footer_en_US.ftl</code> - </li> - - <li> - <code class="inline-code">/foo/bar/footer_en.ftl</code> - </li> - - <li> - <code class="inline-code">/foo/footer_en.ftl</code> - </li> - - <li> - <code class="inline-code">/footer_en.ftl</code> - </li> - - <li> - <code class="inline-code">/foo/bar/footer.ftl</code> - </li> - - <li> - <code class="inline-code">/foo/footer.ftl</code> - </li> - - <li> - <code class="inline-code">/footer.ftl</code> - </li> - </ul> - - <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_import.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_list.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/ref_directive_list.html ---------------------------------------------------------------------- diff --git a/builds/2.3.26-nightly/ref_directive_list.html b/builds/2.3.26-nightly/ref_directive_list.html deleted file mode 100644 index f2e0cbc..0000000 --- a/builds/2.3.26-nightly/ref_directive_list.html +++ /dev/null @@ -1,638 +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>list, else, items, sep, break - 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="list, else, items, sep, break"> -<meta property="og:locale" content="en_US"> -<meta property="og:url" content="http://freemarker.org/docs/ref_directive_list.html"> -<link rel="canonical" href="http://freemarker.org/docs/ref_directive_list.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="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step- 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_list.html"><span itemprop="name">list, else, items, sep, break</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","Template Language Reference","Directive Reference","list, else, items, sep, break"];</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="ref_directive_include.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_local.html"><span>Next</span></a></div><div class="title-wrapper"> -<h1 class="content-header header-section1" id="ref_directive_list" itemprop="headline">list, else, items, sep, break</h1> -</div></div><div class="page-menu"> -<div class="page-menu-title">Page Contents</div> -<ul><li><a class="page-menu-link" href="#autoid_100" data-menu-target="autoid_100">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_101" data-menu-target="autoid_101">Description</a><ul><li><a class="page-menu-link" href="#autoid_102" data-menu-target="autoid_102">Simplest form</a></li><li><a class="page-menu-link" href="#autoid_103" data-menu-target="autoid_103">else directive</a></li><li><a class="page-menu-link" href="#autoid_104" data-menu-target="autoid_104">items directive</a></li><li><a class="page-menu-link" href="#autoid_105" data-menu-target="autoid_105">sep directive</a></li><li><a class="page-menu-link" href="#autoid_106" data-menu-target="autoid_106">break directive</a></li><li><a class="page-menu-link" href="#autoid_107" data-menu-target="autoid_107">Accessing iteration state</a></li><li><a class="page-menu-link" href="#autoid_108" data-menu-target="autoid_108">Nesting loops into each other</a></li><li><a class="page-menu-link" href="#autoid_109" data-menu- target="autoid_109">Notes for Java programmers</a></li></ul></li></ul> </div><a name="ref.directive.list"></a> - - - - -<h2 class="content-header header-section2" id="autoid_100">Synopsis</h2> - - - <p>The simplest form for listing a sequence (or collection) - is:</p> - - -<pre class="metaTemplate"><code class="inline-code"><#list <em class="code-color">sequence</em> as <em class="code-color">item</em>> - <em class="code-color">Part repeated for each item</em> -</#list></code></pre> - - - <p>and to list the key-value pairs of a hash (since - 2.3.25):</p> - - -<pre class="metaTemplate"><code class="inline-code"><#list <em class="code-color">hash</em> as <em class="code-color">key</em>, <em class="code-color">value</em>> - <em class="code-color">Part repeated for each key-value pair</em> -</#list></code></pre> - - - <p>But these are just cases of the generic forms, which are shown - below. Note that for simplicity we only show the generic forms for - sequence listing; simply replace "<code class="inline-code">as - <em class="code-color">item</em></code>" with - "<code class="inline-code">as <em class="code-color">key</em>, - <em class="code-color">value</em></code>" to get the - generic form for hash listing.</p> - - <p>Generic form 1:</p> - - -<pre class="metaTemplate"><code class="inline-code"><#list <em class="code-color">sequence</em> as <em class="code-color">item</em>> - <em class="code-color">Part repeated for each item</em> -<#else> - <em class="code-color">Part executed when there are 0 items</em> -</#list></code></pre> - - - <p>Where:</p> - - <ul> - <li> - The <code class="inline-code">else</code> part is optional, and is only - supported since FreeMarker 2.3.23. - </li> - - <li> - <code class="inline-code"><em class="code-color">sequence</em></code>: - Expressions evaluates to a sequence or collection of the items - we want to iterate through - </li> - - <li> - <code class="inline-code"><em class="code-color">item</em></code>: Name - of the <a href="dgui_misc_var.html">loop variable</a> (not - an expression) - </li> - - <li> - The various "parts" between the tags can - contain arbitrary FTL (including nested - <code class="inline-code">list</code>-s) - </li> - </ul> - - <p>Generic form 2 (since FreeMarker 2.3.23):</p> - - -<pre class="metaTemplate"><code class="inline-code"><#list <em class="code-color">sequence</em>> - <em class="code-color">Part executed once if we have more than 0 items</em> - <#items as <em class="code-color">item</em>> - <em class="code-color"> Part repeated for each item</em> - </#items> - <em class="code-color">Part executed once if we have more than 0 items</em> -<#else> - <em class="code-color">Part executed when there are 0 items</em> -</#list></code></pre> - - - <p>Where: see the "Where" section of Form 1 above - (and thus the <code class="inline-code">else</code> part is optional here - too).</p> - - - - - -<h2 class="content-header header-section2" id="autoid_101">Description</h2> - - - - - - - -<h3 class="content-header header-section3" id="autoid_102">Simplest form</h3> - - - <p>Assuming <code class="inline-code">users</code> contains the - <code class="inline-code">['Joe', 'Kate', 'Fred']</code> sequence:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#list users as user> - <p>${user} -</#list></pre></div> - - - -<div class="code-wrapper"><pre class="code-block code-output"> <p>Joe - <p>Kate - <p>Fred</pre></div> - - <p>The <code class="inline-code">list</code> directive executes the code - between the <code class="inline-code">list</code> start-tag and - <code class="inline-code">list</code> end-tag (the body of - <code class="inline-code">list</code> from now on) for each value in the - sequence (or collection) specified as its first parameter. For - each such iteration the loop variable (<code class="inline-code">user</code> in - this example) will store the value of the current item.</p> - - <p>The loop variable (<code class="inline-code">user</code>) only exists - inside the <code class="inline-code">list</code> body. Also, macros/functions - called from within the loop won't see it (as if it were a local - variable).</p> - - <p>Listing hashes is very similar, but you need to provide two - variable names after the <code class="inline-code">as</code>; one for the hash - key, and another for the associated value. Assuming - <code class="inline-code">products</code> is <code class="inline-code">{ "apple": 5, "banana": - 10, "kiwi": 15 }</code>:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#list products as name, price> - <p>${name}: ${price} -</#list></pre></div> - - - -<div class="code-wrapper"><pre class="code-block code-output"> <p>apple: 5 - <p>banan: 10 - <p>kiwi: 15</pre></div> - - <p>Note that not all hash variables can be listed, because some - of them isn't able to enumerate its keys. It's practically safe to - assume though that hashes that stand for Java - <code class="inline-code">Map</code> objects can be listed.</p> - - - - - - - -<h3 class="content-header header-section3" id="autoid_103">else directive</h3> - - - <a name="ref.directive.list.else"></a> - - - - <div class="callout note"> - <strong class="callout-label">Note:</strong> - - <p><code class="inline-code">else</code> inside <code class="inline-code">list</code> is - only supported since FreeMarker 2.3.23</p> - </div> - - - <p>The <code class="inline-code">else</code> directive is used if when there - are 0 items, you have to print something special instead of just - printing nothing:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#list users as user> - <p>${user} -<#else> - <p>No users -</#list></pre></div> - - <p>This outputs the same as the earlier example, except when - <code class="inline-code">users</code> contains 0 items:</p> - - - -<div class="code-wrapper"><pre class="code-block code-output"> <p>No users</pre></div> - - <p>Note that the loop variable (<code class="inline-code">user</code>) - doesn't exist between the <code class="inline-code">else</code> tag and the - <code class="inline-code">list</code> end-tag, since that part is not part of - the loop.</p> - - <p><code class="inline-code">else</code> must be literally (means, in the - source code) inside the body of the <code class="inline-code">list</code> - directive. That is, you can't moved it out into a macro or - included template.</p> - - - - - - - -<h3 class="content-header header-section3" id="autoid_104">items directive</h3> - - - <a name="ref.directive.items"></a> - - - - <div class="callout note"> - <strong class="callout-label">Note:</strong> - - <p><code class="inline-code">items</code> exists since FreeMarker - 2.3.23</p> - </div> - - - <p>The <code class="inline-code">items</code> directive is used if you have - to print (or do) something before the first list item, and after - the last list item, as far as there's at least 1 item. A typical - example:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#list users> - <ul> - <#items as user> - <li>${user}</li> - </#items> - </ul> -</#list></pre></div> - - - -<div class="code-wrapper"><pre class="code-block code-output"> <ul> - <li>Joe</li> - <li>Kate</li> - <li>Fred</li> - </ul></pre></div> - - <p>If there are 0 items, the above won't print anything, thus - you don't end up with an empty - <code class="inline-code"><ul></ul></code>.</p> - - <p>That is, when the <code class="inline-code">list</code> directive has no - <code class="inline-code">as <em class="code-color">item</em></code> parameter, - the body of its is executed exactly once if there's at least one - item, or not at all otherwise. It's the body of the mandatory - nested <code class="inline-code">items</code> directive that will be run for - each item, and hence it's also the <code class="inline-code">items</code> - directive that defines the loop variable with <code class="inline-code">as - <em class="code-color">item</em></code>, not - <code class="inline-code">list</code>.</p> - - <p>A <code class="inline-code">list</code> directive with - <code class="inline-code">items</code> also can have an <code class="inline-code">else</code> - directive:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#list users> - <ul> - <#items as user> - <li>${user}</li> - </#items> - </ul> -<#else> - <p>No users -</#list></pre></div> - - <p>Some further details:</p> - - <ul> - <li> - <p>The parser will check that a <code class="inline-code">list</code> - without <code class="inline-code">as <em class="code-color">item</em></code> - parameter always has a nested <code class="inline-code">items</code> - directive, and that an <code class="inline-code">items</code> directive - always has an enclosing <code class="inline-code">list</code> which has no - <code class="inline-code">as <em class="code-color">item</em></code> - parameter. This is checked when the template is parsed, not - when the template is executed. Thus, these rules apply on the - FTL source code itself, so you can't move - <code class="inline-code">items</code> out into a macro or included - template.</p> - </li> - - <li> - <p>A <code class="inline-code">list</code> can have multiple - <code class="inline-code">items</code> directives, but only one of them will - be allowed to run (as far as you don't leave and re-enter the - enclosing <code class="inline-code">list</code> directive); and further - attempts to call <code class="inline-code">items</code> will cause error. So - multiple <code class="inline-code">items</code> can be utilized on different - <code class="inline-code">if</code>-<code class="inline-code">else</code> branches for - example, but not for iterating twice.</p> - </li> - - <li> - <p><code class="inline-code">items</code> directive can't have its own - nested <code class="inline-code">else</code> directive, only the enclosing - <code class="inline-code">list</code> can have</p> - </li> - - <li> - <p>The loop variable (<code class="inline-code">user</code>) only exists - inside the body of the <code class="inline-code">items</code> - directive.</p> - </li> - </ul> - - - - - - - -<h3 class="content-header header-section3" id="autoid_105">sep directive</h3> - - - <a name="ref.directive.sep"></a> - - - - <div class="callout note"> - <strong class="callout-label">Note:</strong> - - <p><code class="inline-code">sep</code> exists since FreeMarker - 2.3.23</p> - </div> - - - <p><code class="inline-code">sep</code> is used when you have to display - something between each item (but not before the first item or - after the last item). For example:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#list users as user>${user}<strong><#sep>, </strong></#list></pre></div> - - - -<div class="code-wrapper"><pre class="code-block code-output">Joe, Kate, Fred</pre></div> - - <p>Above, <code class="inline-code"><#sep>, </#list></code> is a - shorthand for <code class="inline-code"><#sep>, - </#sep></#list></code>; the <code class="inline-code">sep</code> - end-tag can be omitted if you would put it where the enclosing - directive is closed anyway. In the next example, you couldn't use - such abbreviation (HTML tags close nothing, as they are just raw - text to output for FreeMarker):</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#list users as user> - <div> - ${user}<strong><#sep>, </#sep></strong> - </div> -</#list></pre></div> - - <p><code class="inline-code">sep</code> is just a shorthand for - <code class="inline-code"><#if - <em class="code-color">item</em>?has_next>...</#if></code>. - Thus, it can be used anywhere where there's a - <code class="inline-code">list</code> or <code class="inline-code">items</code> loop variable - available, it can occur for multiple times, and it can have - arbitrary nested content.</p> - - <p>The parser ensures that <code class="inline-code">sep</code> is only used - on a place where there's a visible loop variable. This happens - earlier than the actual execution of the template. Thus, you can't - move <code class="inline-code">sep</code> from inside the associated - <code class="inline-code">list</code> or <code class="inline-code">items</code> directive into - a macro or included template (the parser can't know where those - will be called from).</p> - - - - - - - -<h3 class="content-header header-section3" id="autoid_106">break directive</h3> - - - <a name="ref.directive.list.break"></a> - - - - <p>You can exit the iteration at any point with the - <code class="inline-code">break</code> directive. For example:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#list 1..10 as x> - ${x} - <#if x == 3> - <strong><#break></strong> - </#if> -</#list></pre></div> - - - -<div class="code-wrapper"><pre class="code-block code-output"> 1 - 2 - 3</pre></div> - - <p>The <code class="inline-code">break</code> directives can be placed - anywhere inside <code class="inline-code">list</code> as far as it has - <code class="inline-code">as <em class="code-color">item</em></code> parameter, - otherwise it can be placed anywhere inside the - <code class="inline-code">items</code> directive. If the - <code class="inline-code">break</code> is inside <code class="inline-code">items</code>, it - will only exit from <code class="inline-code">items</code>, not from - <code class="inline-code">list</code>. In general, <code class="inline-code">break</code> will - only exit from the directive whose body is called for each item, - and can only be placed inside such directive. So for example can't - use <code class="inline-code">break</code> inside <code class="inline-code">list</code>'s - <code class="inline-code">else</code> section, unless there's the - <code class="inline-code">list</code> is nested into another - <code class="inline-code">break</code>-able directive.</p> - - <p>Just like <code class="inline-code">else</code> and - <code class="inline-code">items</code>, <code class="inline-code">break</code> must be - literally inside body of the directive to break out from, and - can't be moved out into a macro or included template.</p> - - - - - - - -<h3 class="content-header header-section3" id="autoid_107">Accessing iteration state</h3> - - - - - - - <p>Starting from 2.3.23, <a href="ref_builtins_loop_var.html">loop variable built-ins</a> is - the preferred way of accessing current state of the iteration. For - example, here we use the <code class="inline-code">counter</code> and - <code class="inline-code">item_parity</code> loop variable built-ins (see all of - them <a href="ref_builtins_loop_var.html">in the - Reference</a>):</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#list users> - <table> - <#items as user> - <tr class="${user<strong>?item_parity</strong>}Row"> - <td>${user<strong>?counter</strong>} - <td>${user} - </#items> - </table> -</#list></pre></div> - - - -<div class="code-wrapper"><pre class="code-block code-output"> <table> - <tr class="<strong>odd</strong>Row"> - <td><strong>1</strong> - <td>Joe - <tr class="<strong>even</strong>Row"> - <td><strong>2</strong> - <td>Kate - <tr class="<strong>odd</strong>Row"> - <td><strong>3</strong> - <td>Fred - </table></pre></div> - - <p>In 2.3.22 and earlier, there were two extra loop variables - to retrieve the iteration state instead (and they still exist for - backward compatibility):</p> - - <ul> - <li> - <p><code class="inline-code"><em class="code-color">item</em>_index</code> - (<em>deprecated</em> by - <code class="inline-code"><em class="code-color">item</em>?index</code>): The - index (0-based number) of the current item in the loop.</p> - </li> - - <li> - <p><code class="inline-code"><em class="code-color">item</em>_has_next</code> - (<em>deprecated</em> by - <code class="inline-code"><em class="code-color">item</em>?has_next</code>): - Boolean value that tells if the current item is the last in - the sequence or not.</p> - </li> - </ul> - - <p>so in the above example, you could replace - <code class="inline-code">${user?counter}</code> with <code class="inline-code">${user_index + - 1}</code>.</p> - - - - - - - -<h3 class="content-header header-section3" id="autoid_108">Nesting loops into each other</h3> - - - <p>Naturally, <code class="inline-code">list</code> or - <code class="inline-code">items</code> can contain further - <code class="inline-code">list</code>-s:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#list 1..2 as i> - <#list 1..3 as j> - i = ${i}, j = ${j} - </#list> -</#list></pre></div> - - - -<div class="code-wrapper"><pre class="code-block code-output"> i = 1, j = 1 - i = 1, j = 2 - i = 1, j = 3 - i = 2, j = 1 - i = 2, j = 2 - i = 2, j = 3</pre></div> - - <p>It's also allowed to use clashing loop variable names - like:</p> - - - -<div class="code-wrapper"><pre class="code-block code-template"><#list 1..2 as i> - Outer: ${i} - <#list 10..12 as i> - Inner: ${i} - </#list> - Outer again: ${i} -</#list></pre></div> - - - -<div class="code-wrapper"><pre class="code-block code-output"> Outer: 1 - Inner: 10 - Inner: 11 - Inner: 12 - Outer again: 1 - Outer: 2 - Inner: 10 - Inner: 11 - Inner: 12 - Outer again: 2</pre></div> - - - - - - - -<h3 class="content-header header-section3" id="autoid_109">Notes for Java programmers</h3> - - - <p><span class="marked-for-programmers">If classic compatible mode - <code class="inline-code">list</code> accepts a scalar too and treats it as a - single-element sequence.</span></p> - - <p><span class="marked-for-programmers">If you pass an collection that - wraps an <code class="inline-code">java.util.Iterator</code> to the - <code class="inline-code">list</code>, you can iterate over its elements only - once, since <code class="inline-code">Iterator</code>s are by their nature - one-off objects. When you try to list a such collection variable - for the second time, an error will abort template - processing.</span></p> - - <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_include.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_local.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>
