blob: eb7c728141cac1513633e0751346dc6f9b0ddbae [file] [log] [blame]
<!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 - 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="FreeMarker Manual">
<meta property="og:title" content="import">
<meta property="og:locale" content="en_US">
<meta property="og:url" content="http://example.com/ref_directive_import.html">
<link rel="canonical" href="http://example.com/ref_directive_import.html">
<link rel="icon" href="favicon.png" type="image/png">
<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1594338519184">
</head>
<body itemscope itemtype="https://schema.org/Code">
<meta itemprop="url" content="http://example.com/">
<meta itemprop="name" content="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://example.com" role="banner"> <img itemprop="image" src="logo.png" alt="My Logo">
</a></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">FreeMarker Manual</a><div class="navigation-header"></div></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">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">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">Index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="ref.html">Reference</a></li><li><a href="app_faq.html">FAQ</a></li><li><a href="preface.html#test_target">Bőregér</a></li><li><a href="api/index.html">API</a></li><li><a href="../index.html">Home</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 = ["FreeMarker Manual","Reference","Directive Reference","import"];</script>
<script src="toc.js?1594338519184"></script>
<script src="docgen-resources/main.min.js?1594338519184"></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_noparse.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_86" data-menu-target="autoid_86">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_87" data-menu-target="autoid_87">Description</a></li></ul> </div><a name="ref.directive.import"></a>
<h2 class="content-header header-section2" id="autoid_86">Synopsis</h2>
<pre class="metaTemplate">
<code class="inline-code">&lt;#import <em class="code-color">path</em> as <em class="code-color">hash</em>&gt;</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&#39;t have to be a fixed string,
it can also be something like, for example,
<code class="inline-code">profile.baseDir + &quot;/menu.ftl&quot;</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.
</li>
</ul>
<h2 class="content-header header-section2" id="autoid_87">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.</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">&lt;#import &quot;/libs/mylib.ftl&quot; as my&gt;
&lt;@my.copyright date=&quot;1999-2002&quot;/&gt;</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">&quot;foo.ftl&quot;</code>
and <code class="inline-code">&quot;../foo.ftl&quot;</code>, or an absolute like
<code class="inline-code">&quot;/foo.ftl&quot;</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 &#39;&#39;root directory of the templates&#39;&#39;) 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 &quot;auto imports&quot; 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&#39;s Guide/Miscellaneous/Namespaces</a></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_noparse.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><div class="col-right"><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="2020-07-09T23:48:39Z" title="Thursday, July 9, 2020 11:48:39 PM GMT">2020-07-09 23:48:39 GMT</time> </p>
<p class="copyright">
© <span itemprop="copyrightYear">1999</span>–2020
<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="https://apache.org/">The Apache Software Foundation</a> </p>
</div></div></div></body>
</html>