<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8"/>
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <meta name="Date-Revision-yyyymmdd" content="20140918"/>
  <meta http-equiv="Content-Language" content="en"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

  <title>Tag Developers Guide</title>

  <link href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic" rel="stylesheet" type="text/css">
  <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
  <link href="/css/main.css" rel="stylesheet">
  <link href="/css/custom.css" rel="stylesheet">
  <link href="/highlighter/github-theme.css" rel="stylesheet">

  <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
  <script type="text/javascript" src="/bootstrap/js/bootstrap.js"></script>
  <script type="text/javascript" src="/js/community.js"></script>
</head>
<body>

<a href="http://github.com/apache/struts" class="github-ribbon">
  <img style="position: absolute; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub">
</a>

<header>
  <nav>
    <div role="navigation" class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" data-toggle="collapse" data-target="#struts-menu" class="navbar-toggle">
            Menu
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a href="/index.html" class="navbar-brand logo"><img src="/img/struts-logo.svg"></a>
        </div>
        <div id="struts-menu" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Home<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/index.html">Welcome</a></li>
                <li><a href="/download.cgi">Download</a></li>
                <li><a href="/releases.html">Releases</a></li>
                <li><a href="/announce-2021.html">Announcements</a></li>
                <li><a href="http://www.apache.org/licenses/">License</a></li>
                <li><a href="https://www.apache.org/foundation/thanks.html">Thanks!</a></li>
                <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Support<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/mail.html">User Mailing List</a></li>
                <li><a href="https://issues.apache.org/jira/browse/WW">Issue Tracker</a></li>
                <li><a href="/security.html">Reporting Security Issues</a></li>
                <li class="divider"></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Migration+Guide">Version Notes</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Security+Bulletins">Security Bulletins</a></li>
                <li class="divider"></li>
                <li><a href="/maven/project-info.html">Maven Project Info</a></li>
                <li><a href="/maven/struts2-core/dependencies.html">Struts Core Dependencies</a></li>
                <li><a href="/maven/struts2-plugins/modules.html">Plugin Dependencies</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Documentation<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/birdseye.html">Birds Eye</a></li>
                <li><a href="/primer.html">Key Technologies</a></li>
                <li><a href="/kickstart.html">Kickstart FAQ</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Home">Wiki</a></li>
                <li class="divider"></li>
                <li><a href="/getting-started/">Getting Started</a></li>
                <li><a href="/security/">Security Guide</a></li>
                <li><a href="/core-developers/">Core Developers Guide</a></li>
                <li><a href="/tag-developers/">Tag Developers Guide</a></li>
                <li><a href="/maven-archetypes/">Maven Archetypes</a></li>
                <li><a href="/plugins/">Plugins</a></li>
                <li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
                <li><a href="/tag-developers/tag-reference.html">Tag reference</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/FAQs">FAQs</a></li>
                <li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Contributing<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/youatstruts.html">You at Struts</a></li>
                <li><a href="/helping.html">How to Help FAQ</a></li>
                <li><a href="/dev-mail.html">Development Lists</a></li>
                <li><a href="/contributors/">Contributors Guide</a></li>
                <li class="divider"></li>
                <li><a href="/submitting-patches.html">Submitting patches</a></li>
                <li><a href="/builds.html">Source Code and Builds</a></li>
                <li><a href="/coding-standards.html">Coding standards</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Contributors+Guide">Contributors Guide</a></li>
                <li class="divider"></li>
                <li><a href="/release-guidelines.html">Release Guidelines</a></li>
                <li><a href="/bylaws.html">PMC Charter</a></li>
                <li><a href="/volunteers.html">Volunteers</a></li>
                <li><a href="https://gitbox.apache.org/repos/asf?p=struts.git">Source Repository</a></li>
                <li><a href="/updating-website.html">Updating the website</a></li>
              </ul>
            </li>
            <li class="apache"><a href="http://www.apache.org/"><img src="/img/apache.png"></a></li>
          </ul>
        </div>
      </div>
    </div>
  </nav>
</header>


<article class="container">
  <section class="col-md-12">
    <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/tag-developers/dojo-head-tag.md" title="Edit this page on GitHub">Edit on GitHub</a>
    
    <h1 id="dojo-head">dojo head</h1>

<blockquote>
  <p>NOTE: Ajax template (Dojo plugin) is deprecated and won’t be supported any longer.</p>
</blockquote>

<p><strong>Description</strong></p>

<p> The "head" tag renders required JavaScript code to configure Dojo and is required in order to use
 any of the tags included in the Dojo plugin.</p>
<p>&lt;/p&gt;</p>

<p> <p></p>
 
 <p>To debug javascript errors set the "debug" attribute to true, which will display Dojo 
 (and Struts) warning and error messages at the bottom of the page. Core Dojo files are by default
 compressed, to improve loading time, which makes them very hard to read. To debug Dojo and Struts
 widgets, set the "compressed" attribute to true. Make sure to turn this option off before
 moving your project into production, as uncompressed files will take longer to download.
 </p>
 <p>For troubleshooting javascript problems the following configuration is recommended:</p>
 <pre>
   <sx:head debug="true" cache="false" compressed="false" />
 </pre>

 <p>Dojo files are loaded as required by the Dojo loading mechanism. The problem with this
 approach is that the files are not cached by the browser, so reloading a page or navigating
 to a different page that uses the same widgets will cause the files to be reloaded. To solve 
 this problem a custom Dojo profile is distributed with the Dojo plugin. This profile contains
 the files required by the tags in the Dojo plugin, all in one file (524Kb), which is cached 
 by the browser. This file will take longer to load by the browser but it will be downloaded 
 only once. By default the "cache" attribute is set to false.</p>
 
 <p>Some tags like the "datetimepicker" can use different locales, to use a locale
 that is different from the request locale, it must be specified on the "extraLocales" 
 attribute. This attribute can contain a comma separated list of locale names. From
 Dojo's documentation:</p>
 
 <p>
 The locale is a short string, defined by the host environment, which conforms to RFC 3066 
 (http://www.ietf.org/rfc/rfc3066.txt) used in the HTML specification. 
 It consists of short identifiers, typically two characters 
 long which are case-insensitive. Note that Dojo uses dash separators, not underscores like 
 Java (e.g. "en-us", not "en_US"). Typically country codes are used in the optional second 
 identifier, and additional variants may be specified. For example, Japanese is "ja"; 
 Japanese in Japan is "ja-jp". Notice that the lower case is intentional -- while Dojo 
 will often convert all locales to lowercase to normalize them, it is the lowercase that 
 must be used when defining your resources.
 </p>
 
 <p>The "locale" attribute configures Dojo's locale:</p>
 
 <p>"The locale Dojo uses on a page may be overridden by setting djConfig.locale. This may be 
 done to accomodate applications with a known user profile or server pages which do manual
 assembly and assume a certain locale. You may also set djConfig.extraLocale to load 
 localizations in addition to your own, in case you want to specify a particular 
 translation or have multiple languages appear on your page."</p>
 
 <p>To improve loading time, the property "parseContent" is set to false by default. This property will
 instruct Dojo to only build widgets using specific element ids. If the property is set to true
 Dojo will scan the whole document looking for widgets.</p>
 
 <p>Dojo 0.4.3 is distributed with the Dojo plugin, to use a different Dojo version, the 
 "baseRelativePath" attribute can be set to the URL of the Dojo root folder on your application.
 </p>
</p>

<blockquote>

</blockquote>

<blockquote>

</blockquote>

<blockquote>
  <p>If you are planning to nest tags from the Dojo plugin, make sure you set parseContent=”false”, otherwise each request made by the inner tags will be performed twice.</p>
</blockquote>

<blockquote>

</blockquote>

<p><strong>Parameters</strong></p>

<p>		<table width="100%">

			<tr>

				<td colspan="6"><h4>Dynamic Attributes Allowed:</h4> false</td>

			</tr>

			<tr>

				<td colspan="6">&nbsp;</td>

			</tr>

			<tr>

				<th align="left" valign="top"><h4>Name</h4></th>

				<th align="left" valign="top"><h4>Required</h4></th>

				<th align="left" valign="top"><h4>Default</h4></th>

				<th align="left" valign="top"><h4>Evaluated</h4></th>

				<th align="left" valign="top"><h4>Type</h4></th>

				<th align="left" valign="top"><h4>Description</h4></th>

			</tr>

				<tr>

					<td align="left" valign="top">baseRelativePath</td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top">/struts/dojo</td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top">String</td>

					<td align="left" valign="top">Context relative path of Dojo distribution folder</td>

				</tr>

				<tr>

					<td align="left" valign="top">cache</td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top">true</td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top">Boolean</td>

					<td align="left" valign="top">Use Struts Dojo profile, which contains all Struts widgets in one file, making it possible to be chached by the browser</td>

				</tr>

				<tr>

					<td align="left" valign="top">compressed</td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top">true</td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top">Boolean</td>

					<td align="left" valign="top">Use compressed version of dojo.js</td>

				</tr>

				<tr>

					<td align="left" valign="top">debug</td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top">Boolean</td>

					<td align="left" valign="top">Enable Dojo debug messages</td>

				</tr>

				<tr>

					<td align="left" valign="top">extraLocales</td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top"></td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top">String</td>

					<td align="left" valign="top">Comma separated list of locale names to be loaded by Dojo, locale names must be specified as in RFC3066</td>

				</tr>

				<tr>

					<td align="left" valign="top">locale</td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top"></td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top">String</td>

					<td align="left" valign="top">Default locale to be used by Dojo, locale name must be specified as in RFC3066</td>

				</tr>

				<tr>

					<td align="left" valign="top">parseContent</td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top">false</td>

					<td align="left" valign="top">Boolean</td>

					<td align="left" valign="top">Parse the whole document for widgets</td>

				</tr>

		</table>

</p>

<p><strong>Examples</strong></p>

<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="err">&lt;</span>%@ taglib prefix="sx" uri="/struts-dojo-tags" %&gt;
 <span class="nt">&lt;head&gt;</span>
   <span class="nt">&lt;title&gt;</span>My page<span class="nt">&lt;/title&gt;</span>
   <span class="nt">&lt;sx:head/&gt;</span>
 <span class="nt">&lt;/head&gt;</span>

</code></pre></div></div>

<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="err">&lt;</span>%@ taglib prefix="sx" uri="/struts-dojo-tags" %&gt;
 <span class="nt">&lt;head&gt;</span>
   <span class="nt">&lt;title&gt;</span>My page<span class="nt">&lt;/title&gt;</span>
   <span class="nt">&lt;sx:head</span> <span class="na">debug=</span><span class="s">"true"</span> <span class="na">extraLocales=</span><span class="s">"en-us,nl-nl,de-de"</span><span class="nt">/&gt;</span>
 <span class="nt">&lt;/head&gt;</span>

</code></pre></div></div>


  </section>
</article>


<footer class="container">
  <div class="col-md-12">
    Copyright &copy; 2000-2018 <a href="http://www.apache.org/">The Apache Software Foundation </a>.
    All Rights Reserved.
  </div>
  <div class="col-md-12">
    Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts project logos are
    trademarks of The Apache Software Foundation.
  </div>
  <div class="col-md-12">Logo and website design donated by <a href="https://softwaremill.com/">SoftwareMill</a>.</div>
</footer>

<script>!function (d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (!d.getElementById(id)) {
    js = d.createElement(s);
    js.id = id;
    js.src = "//platform.twitter.com/widgets.js";
    fjs.parentNode.insertBefore(js, fjs);
  }
}(document, "script", "twitter-wjs");</script>
<script src="https://apis.google.com/js/platform.js" async="async" defer="defer"></script>

<div id="fb-root"></div>

<script>(function (d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s);
  js.id = id;
  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>


</body>
</html>
