blob: c01bc7f2b5ad589a4bb668d4be6baa825054b0a2 [file] [log] [blame]
<!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.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>