http://git-wip-us.apache.org/repos/asf/struts-site/blob/2b2ec9b3/content/tag-developers/ajax-theme.html
----------------------------------------------------------------------
diff --git a/content/tag-developers/ajax-theme.html 
b/content/tag-developers/ajax-theme.html
new file mode 100644
index 0000000..714dfbc
--- /dev/null
+++ b/content/tag-developers/ajax-theme.html
@@ -0,0 +1,669 @@
+<!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 (WIP)</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="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.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="/downloads.html">Downloads</a></li>
+                <li><a href="/announce.html">Announcements</a></li>
+                <li><a href="http://www.apache.org/licenses/";>License</a></li>
+                <li><a 
href="http://apache.org/foundation/thanks.html";>Thanks!</a></li>
+                <li><a 
href="http://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="/maven/project-info.html">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 class="divider"></li>
+                <li><a href="/maven/struts2-core/apidocs/index.html">Struts 
Core API</a></li>
+                <li><a href="/docs/plugins.html">Plugin APIs</a></li>
+                <li><a href="/docs/tag-reference.html">Tag reference</a></li>
+                <li><a 
href="http://cwiki.apache.org/S2PLUGINS/home.html";>Plugin registry</a></li>
+                <li class="divider"></li>
+                <li><a href="/docs/tutorials.html">Tutorials - 
DEPRECATED</a></li>
+                <li><a href="/docs/faqs.html">FAQs - DEPRECATED</a></li>
+                <li><a href="/docs/guides.html">Guides - DEPRECATED</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 class="divider"></li>
+                <li><a href="/submitting-patches.html">Submitting 
patches</a></li>
+                <li><a href="/builds.html">Source Code</a></li>
+                <li><a href="/coding-standards.html">Coding standards</a></li>
+                <li class="divider"></li>
+                <li><a href="/releases.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://git-wip-us.apache.org/repos/asf?p=struts.git";>Source 
Repository</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/ajax-theme.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
+    <h1 id="ajax-theme">ajax theme</h1>
+
+<p>The ajax theme is deprecated!</p>
+
+<table>
+  <tbody>
+    <tr>
+    </tr>
+  </tbody>
+</table>
+
+<p>The ajax theme extends the <a href="#PAGE_13834">xhtml theme</a> with AJAX 
features. The theme uses the popular DOJO AJAX/JavaScript toolkit. AJAX 
features include:</p>
+
+<ul>
+  <li>
+    <p><em>AJAX Client Side Validation</em></p>
+  </li>
+  <li>
+    <p>Remote <a href="#PAGE_14201">form</a> submission support (works with 
the <a href="#PAGE_14054">submit</a> tag as well)</p>
+  </li>
+  <li>
+    <p>An advanced <a href="#PAGE_13908">div</a> template that provides 
dynamic reloading of partial HTML</p>
+  </li>
+  <li>
+    <p>An advanced <a href="#PAGE_14027">a</a> template that provides the 
ability to load and evaluate JavaScript remotely</p>
+  </li>
+  <li>
+    <p>An AJAX-only <a href="#PAGE_14222">tabbedPanel</a> implementation</p>
+  </li>
+  <li>
+    <p>A rich pub-sub event model</p>
+  </li>
+  <li>
+    <p>Interactive autocomplete tag</p>
+  </li>
+</ul>
+
+<p>(ok)  See also: <em>Ajax tags</em></p>
+
+<p><strong>Browser Compatibility</strong></p>
+
+<p>AJAX (as a technology) uses a browser-side scripting component that varies 
between browers (and sometimes versions). To hide those differences from the 
developer, we utilize the dojo toolkit (<a 
href="http://www.dojotoolkit.org";>http://www.dojotoolkit.org</a>). Several 
browsers are supported by dojo, and any UI’s created with the ajax theme 
should act the same way for supported browsers. The supported browsers are:</p>
+
+<ul>
+  <li>
+    <p>IE 5.5+</p>
+  </li>
+  <li>
+    <p>FF 1.0+</p>
+  </li>
+  <li>
+    <p>Latest Safari (on up-to-date OS versions)</p>
+  </li>
+  <li>
+    <p>Latest Opera</p>
+  </li>
+  <li>
+    <p>Latest Konqueror</p>
+  </li>
+</ul>
+
+<p><strong>Extending the AJAX Theme</strong></p>
+
+<p>The wrapping technique utilized by the ajax theme is much like <a 
href="#PAGE_13834">xhtml theme</a>, but the</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>controlheader.ftl
+</code></pre>
+</div>
+<p>is a wee bit different.</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+&lt;#if parameters.label?if_exists != ""&gt;
+       &lt;#include "/${parameters.templateDir}/xhtml/controlheader.ftl" /&gt;
+&lt;/#if&gt;
+&lt;#if parameters.form?exists &amp;&amp; 
parameters.form.validate?default(false) == true&gt;
+       &lt;#-- can't mutate the data model in freemarker --&gt;
+    &lt;#if parameters.onblur?exists&gt;
+        ${tag.addParameter('onblur', "validate(this);${parameters.onblur}")}
+    &lt;#else&gt;
+        ${tag.addParameter('onblur', "validate(this);")}
+    &lt;/#if&gt;
+&lt;/#if&gt;
+
+</code></pre>
+</div>
+
+<p>The header provides for <em>AJAX Client Side Validation</em>  by checking 
if the</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>validate
+</code></pre>
+</div>
+<p>attribute is set to true. If it is, a validation request is made on each</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>onblur
+</code></pre>
+</div>
+<p>event for a HTML <a href="#PAGE_14248">Struts Tags</a>. Some people don’t 
like the</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>onblur
+</code></pre>
+</div>
+<p>behavior; they would rather a more advanced timer (say, 200ms) be kicked 
off after every keystroke. You can override this template and provide that type 
of behavior if you would like.</p>
+
+<p><strong>Special Interest</strong></p>
+
+<p>Three ajax_xhtml templates of special interest are</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>head
+</code></pre>
+</div>
+<p>,</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>div
+</code></pre>
+</div>
+<p>, and</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>a
+</code></pre>
+</div>
+<p>.</p>
+
+<table>
+  <tbody>
+    <tr>
+      <td>Especially with the ajax theme, it is important to use the <a 
href="#PAGE_13997">head</a> tag. (See the <em>ajax head template</em>  for more 
information.) Without it, AJAX support may not be set up properly.</td>
+    </tr>
+  </tbody>
+</table>
+
+<table>
+  <tbody>
+    <tr>
+    </tr>
+  </tbody>
+</table>
+
+<ul>
+  <li>
+    <p><em>ajax head template</em></p>
+  </li>
+  <li>
+    <p><em>ajax div template</em></p>
+  </li>
+  <li>
+    <p><em>ajax a template</em></p>
+  </li>
+</ul>
+
+<p>(ok)  In addition to these templates, be familiar with the <em>ajax event 
system</em>  provided by the framework and Dojo.</p>
+
+<p><strong>ajax a template</strong></p>
+
+<p>The ajax theme is experimental. Feedback is appreciated.</p>
+
+<table>
+  <tbody>
+    <tr>
+    </tr>
+  </tbody>
+</table>
+
+<p>The ajax a template is used to make asynchronous calls to the server when 
the user clicks on the a href link.  It is useful when you need to communicate 
information back to the application from the UI, without requiring the entire 
page to be re-rendered.  An example would be removing an item from a list.</p>
+
+<p>The <em>preInvokeJS</em>  attribute is used to determine whether the URL 
specified should be called or not, and must contain Javascript that returns 
<em>true</em>  or <em>false</em> .  If you want to call a JavaScript function, 
use the format preInvokeJS=’yourMethodName(data,type)’. An example would be 
to show a confirm dialog to the user to double check whether they want to 
remove a user from a list.</p>
+
+<p><strong>Remember</strong>: the content returned by the <em>href</em>  
attribute must be JavaScript. That JavaScript will then be evaluated within the 
webpage. If you only wish to publish an event to the topic specified, then 
simply return no result (or NONE) from your action and utilize the 
<em>notifyTopics</em>  attribute to specific the topic names.</p>
+
+<p>For an example of the interaction between the <a href="#PAGE_13908">div</a> 
tag and the <a href="#PAGE_14027">a</a> tag using the topic pub/sub model, see 
the examples in the <em>ajax div template</em> .</p>
+
+<p><strong>ajax div template</strong></p>
+
+<p>The Ajax theme is experimental. Feedback is appreciated.</p>
+
+<table>
+  <tbody>
+    <tr>
+    </tr>
+  </tbody>
+</table>
+
+<p>The ajax <a href="#PAGE_13908">div</a> template provides a much more 
interesting div rendering option that the other themes do. Rather than simply 
rendering a</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;div&gt;
+</code></pre>
+</div>
+<p>tag, this template relies on advanced AJAX features provided by the <a 
href="http://dojotoolkit.org";>Dojo Toolkit</a>^[http://dojotoolkit.org]. While 
the <a href="#PAGE_13908">div</a> tag could be used outside of the <a 
href="#PAGE_14205">ajax theme</a>, it is usually not very useful. See the <a 
href="#PAGE_13908">div</a> tag for more information on what features are 
provided.</p>
+
+<p><strong>Features</strong></p>
+
+<p>The remote div has a few features, some of which can be combined with the 
<a href="#PAGE_14027">a</a> tag and the <em>ajax a template</em> . These uses 
are:</p>
+
+<ul>
+  <li>
+    <p>Retrieve remote data</p>
+  </li>
+  <li>
+    <p>Initialize the div with content before the remote data is retrieved</p>
+  </li>
+  <li>
+    <p>Display appropriate error and loading messages</p>
+  </li>
+  <li>
+    <p>Refresh data on a timed cycle</p>
+  </li>
+  <li>
+    <p>Listen for events and refresh data</p>
+  </li>
+  <li>
+    <p>JavaScript control support</p>
+  </li>
+</ul>
+
+<p><strong>Retrieve Remote Data</strong></p>
+
+<p>The simplest way to use the div tag is to provide an <em>href</em>  
attribute. For example:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+&lt;saf:div theme="ajax" id="weather" 
href="http://www.weather.com/weather?zip=97239"/&gt;
+
+</code></pre>
+</div>
+
+<p>What this does after the HTML page is completely loaded, the specified URL 
will be retrieved asynchronously in the browser. The entire contents returned 
by that URL will be injected in to the div.</p>
+
+<p><strong>Initializing the Div</strong></p>
+
+<p>Because the remote data isn’t loaded immediately, it is sometimes useful 
to have some placeholder content that exists before the remote data is 
retrieved. The content is essentially just the body of the div element. For 
example:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+&lt;saf:div theme="ajax" id="weather" 
href="http://www.weather.com/weather?zip=97239"&gt;
+    Placeholder...
+&lt;/saf:div&gt;
+
+</code></pre>
+</div>
+
+<p>If you wish to load more complex initial data, you can use the <a 
href="#PAGE_14034">action</a> tag and the <em>executeResult</em>  attribute:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+&lt;saf:div theme="ajax" id="weather" 
href="http://www.weather.com/weather?zip=97239"&gt;
+    &lt;ww:action id="weather" name="weatherBean" executeResult="true"&gt;
+        &lt;ww:param name="zip" value="97239"/&gt;
+    &lt;/ww:action&gt;
+&lt;/saf:div&gt;
+
+</code></pre>
+</div>
+
+<p><strong>Loading and Error Messages</strong></p>
+
+<p>If you’d like to display special messages when the data is being 
retrieved or when the data cannot be retrieved, you can use the 
<em>errorText</em>  and <em>loadingText</em>  attributes:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+&lt;saf:div theme="ajax" id="weather" 
href="http://www.weather.com/weather?zip=97239";
+        loadingText="Loading weather information..."
+        errorText="Unable to contact weather server"&gt;
+    Placeholder...
+&lt;/saf:div&gt;
+
+</code></pre>
+</div>
+
+<p><strong>Refresh Timers</strong></p>
+
+<p>Another feature this div template provides is the ability to refresh data 
on a timed basis. Using the <em>updateFreq</em>  and the <em>delay</em> 
attributes, you can specify how often the timer goes off and when the timer 
starts (times in milliseconds). For example, the following will update every 
minute after a two second delay:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+&lt;saf:div theme="ajax" id="weather" 
href="http://www.weather.com/weather?zip=97239";
+        loadingText="Loading weather information..."
+        errorText="Unable to contact weather server"&gt;
+        delay="2000"
+        updateFreq="60000"
+    Placeholder...
+&lt;/saf:div&gt;
+
+</code></pre>
+</div>
+
+<p><strong>Listening for Events</strong></p>
+
+<p>The <a href="#PAGE_14027">a</a> tag (specifically the <em>ajax a 
template</em> ) and the div tag support an <em>ajax event system</em> , 
providing the ability to broadcast events to topics. You can specify the 
<strong>topics</strong> to listen to using a comma separated list in the 
<em>listenTopics</em>  attribute. What this means is that when a topic is 
published, usually through the <em>ajax a template</em> , the URL specified in 
the <em>href</em>  attribute will be re-requested.</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+&lt;saf:div theme="ajax" id="weather" 
href="http://www.weather.com/weather?zip=97239";
+        loadingText="Loading weather information..."
+        errorText="Unable to contact weather server"
+        listenTopics="weather_topic,some_topic"&gt;
+    Placeholder...
+&lt;/saf:div&gt;
+&lt;saf:a id="link1"
+      theme="ajax"
+      href="refreshWeather.action"
+      notifyTopics="weather_topic,other_topic"
+      errorText="An Error ocurred"&gt;Refresh&lt;/saf:a&gt;
+
+</code></pre>
+</div>
+
+<p><strong>JavaScript Support</strong></p>
+
+<p>There are also javascript functions to refresh the content and stop/start 
the refreshing of the component. For the remote div with the component id 
“remotediv1”:</p>
+
+<p>To start refreshing use the javascript:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+remotediv1.startTimer();
+
+</code></pre>
+</div>
+
+<p>To stop refreshing use the javascript:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+remotediv1.stopTimer();
+
+</code></pre>
+</div>
+
+<p>To refresh the content use the javascript:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+remotediv1.refresh();
+
+</code></pre>
+</div>
+
+<p><strong>JavaScript Examples:</strong></p>
+
+<p>To further illustrate these concepts here is an example. Say you want to 
change the url of a div at runtime via javascript. Here is what you need to 
do:</p>
+
+<p>What you will need to do is add a JS function that listens to a JS event 
that publishes the id from the select box that was selected.  It will modify 
the URL for the div (adding the id so the correct data is obtained) and then 
bind() the AJAX div so it refreshes.</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+&lt;saf:head theme="ajax" /&gt;
+
+&lt;script type="text/javascript"&gt;
+    function updateReports(id) {
+       var reportDiv= window['reportDivId'];
+       reportDiv.href = '/../reportListRemote.action?selectedId='+id;
+       reportDiv.refresh();
+    }
+    dojo.event.topic.getTopic("updateReportsListTopic").subscribe(null, 
"updateReports");
+&lt;/script&gt;
+
+&lt;form ... &gt;
+&lt;saf:select .... onchange="javascript: 
dojo.event.topic.publish("updateReportsListTopic", this.value); " /&gt;
+
+&lt;saf:div id="reportDivId" theme="ajax" href="/.../reportListRemote.action" 
&gt;
+  Loading reports...
+&lt;/saf:div&gt;
+&lt;/form&gt;
+
+</code></pre>
+</div>
+
+<p><strong>ajax event system</strong></p>
+
+<p>As you may have seen with the <em>ajax div template</em>  and <em>ajax a 
template</em> , the framework and Dojo provide a nice way to subscribe and 
notify of topics from within the browser. A benifit of using Dojo as the basis 
of many of these components is being able to loosely couple UI components.  
There are two attributes of importance:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>listenTopics
+</code></pre>
+</div>
+<p>and</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>notifyTopics
+</code></pre>
+</div>
+<p>.</p>
+
+<ul>
+  <li>If a component has a</li>
+</ul>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>notifyTopics
+</code></pre>
+</div>
+<p>attribute, then after the processing has been completed a message with be 
published to the topic names supplied as a value (comma delimited).</p>
+
+<ul>
+  <li>If a component has a</li>
+</ul>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>listenTopics
+</code></pre>
+</div>
+<p>attribute, then when a message is published to the topic names supplied as 
a value (comma delimited), the component will perform custom tag-specific logic 
( i.e a DIV tag will re-fresh its content).</p>
+
+<p>As well as this, you can publish and subscribe to topic names with 
javascript code.  To publish to the</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>topic_name
+</code></pre>
+</div>
+<p>topic:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+dojo.event.topic.publish("topic_name", "content");
+
+</code></pre>
+</div>
+
+<p>The topic_name attribute is required, the content attribute is not and most 
elements are triggered without having this attribute. See the <em>ajax div 
template</em>  for an example of this type of interaction.</p>
+
+<p>To subscribe to the <em>topic_name</em>  topic:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+function doSomethingWithEvent(data) {
+...
+}
+
+dojo.event.topic.getTopic("topic_name").subscribe(null, 
"doSomethingWithEvent");
+
+</code></pre>
+</div>
+
+<p>The</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>subscribe
+</code></pre>
+</div>
+<p>method takes 2 parameters, the first is the JavaScript object variable (or 
null if the function is not from an object) and the second is the name of the 
function to call when an event is recieved on the topic.</p>
+
+<p><strong>ajax head template</strong></p>
+
+<p>The ajax <a href="#PAGE_13997">head</a> template builds upon the <em>xhtml 
head template</em>  by providing additional JavaScript includes for the <a 
href="http://dojotoolkit.org";>Dojo Toolkit</a>^[http://dojotoolkit.org], which 
is used by the <em>ajax a template</em> , <em>ajax div template</em>  , and the 
<em>ajax tabbedPanel template</em> . It is required to use this tag,</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;ww:head 
theme="ajax"/&gt;
+</code></pre>
+</div>
+<p>, in your HTML</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;head&gt;
+</code></pre>
+</div>
+<p>block if you wish to use AJAX feature. The contents of 
<strong>head.ftl</strong> are:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=all|lang=xml|url=struts2/plugins/dojo/src/main/resources/template/ajax/head.ftl</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<table>
+  <tbody>
+    <tr>
+      <td>If you are having trouble getting the AJAX theme to work, you should 
include the above JavaScript in your page manually, changing “isDebug: 
false” to “isDebug: true”.  This will log out debugging information 
directly to the screen.</td>
+    </tr>
+  </tbody>
+</table>
+
+<table>
+  <tbody>
+    <tr>
+    </tr>
+  </tbody>
+</table>
+
+<p>Note that Dojo is configured to use the same character encoding specified 
in <em>struts.properties</em> , typically UTF-8. For a simple example of how to 
use the <a href="#PAGE_13997">head</a> tag with the AJAX theme, simply do the 
following in your HTML:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=common-include|lang=xml|url=struts2/apps/showcase/src/main/webapp/ajax/commonInclude.jsp</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<blockquote>
+
+</blockquote>
+
+<blockquote>
+
+</blockquote>
+
+<blockquote>
+  <p>The above sample is from Struts trunk; for 2.0.6 you should use <s:head 
debug="true"></s:head>.</p>
+</blockquote>
+
+<blockquote>
+
+</blockquote>
+
+<p><strong>ajax tabbedPanel template</strong></p>
+
+<p>TODO: Describe the Ajax TabbedPanel template</p>
+
+<p><strong>ajax submit template</strong></p>
+
+<p>TODO: Describe the Ajax Submit template</p>
+
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2016 <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>
+
+
+<script>
+$(function() {
+  return $("h2, h3, h4, h5, h6").each(function(i, el) {
+    var $el, id;
+    $el = $(el);
+    id = $el.attr('id');
+    if (id) {
+      $el.removeAttr('id');
+      return $el.before($("<a />").addClass('anchor').attr('name', id));
+    }
+  });
+});
+</script>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/2b2ec9b3/content/tag-developers/append-tag.html
----------------------------------------------------------------------
diff --git a/content/tag-developers/append-tag.html 
b/content/tag-developers/append-tag.html
new file mode 100644
index 0000000..aaddd81
--- /dev/null
+++ b/content/tag-developers/append-tag.html
@@ -0,0 +1,209 @@
+<!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 (WIP)</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="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.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="/downloads.html">Downloads</a></li>
+                <li><a href="/announce.html">Announcements</a></li>
+                <li><a href="http://www.apache.org/licenses/";>License</a></li>
+                <li><a 
href="http://apache.org/foundation/thanks.html";>Thanks!</a></li>
+                <li><a 
href="http://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="/maven/project-info.html">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 class="divider"></li>
+                <li><a href="/maven/struts2-core/apidocs/index.html">Struts 
Core API</a></li>
+                <li><a href="/docs/plugins.html">Plugin APIs</a></li>
+                <li><a href="/docs/tag-reference.html">Tag reference</a></li>
+                <li><a 
href="http://cwiki.apache.org/S2PLUGINS/home.html";>Plugin registry</a></li>
+                <li class="divider"></li>
+                <li><a href="/docs/tutorials.html">Tutorials - 
DEPRECATED</a></li>
+                <li><a href="/docs/faqs.html">FAQs - DEPRECATED</a></li>
+                <li><a href="/docs/guides.html">Guides - DEPRECATED</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 class="divider"></li>
+                <li><a href="/submitting-patches.html">Submitting 
patches</a></li>
+                <li><a href="/builds.html">Source Code</a></li>
+                <li><a href="/coding-standards.html">Coding standards</a></li>
+                <li class="divider"></li>
+                <li><a href="/releases.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://git-wip-us.apache.org/repos/asf?p=struts.git";>Source 
Repository</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/append-tag.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
+    <h1 id="append">append</h1>
+
+<p>Please make sure you have read the <a href="tag-syntax.html">Tag Syntax</a> 
document and understand how tag attribute syntax works.</p>
+
+<h2 id="description">Description</h2>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=javadoc|javadoc=true|url=org.apache.struts2.components.AppendIterator</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<h2 id="parameters">Parameters</h2>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=tagattributes|javadoc=false|url=struts2-tags/append.html</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<h2 id="example">Example</h2>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=code|lang=java|javadoc=true|url=org.apache.struts2.components.AppendIterator</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=example|javadoc=true|lang=xml|url=org.apache.struts2.components.AppendIterator</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2016 <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>
+
+
+<script>
+$(function() {
+  return $("h2, h3, h4, h5, h6").each(function(i, el) {
+    var $el, id;
+    $el = $(el);
+    id = $el.attr('id');
+    if (id) {
+      $el.removeAttr('id');
+      return $el.before($("<a />").addClass('anchor').attr('name', id));
+    }
+  });
+});
+</script>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/2b2ec9b3/content/tag-developers/bean-tag.html
----------------------------------------------------------------------
diff --git a/content/tag-developers/bean-tag.html 
b/content/tag-developers/bean-tag.html
new file mode 100644
index 0000000..60145e2
--- /dev/null
+++ b/content/tag-developers/bean-tag.html
@@ -0,0 +1,209 @@
+<!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 (WIP)</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="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.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="/downloads.html">Downloads</a></li>
+                <li><a href="/announce.html">Announcements</a></li>
+                <li><a href="http://www.apache.org/licenses/";>License</a></li>
+                <li><a 
href="http://apache.org/foundation/thanks.html";>Thanks!</a></li>
+                <li><a 
href="http://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="/maven/project-info.html">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 class="divider"></li>
+                <li><a href="/maven/struts2-core/apidocs/index.html">Struts 
Core API</a></li>
+                <li><a href="/docs/plugins.html">Plugin APIs</a></li>
+                <li><a href="/docs/tag-reference.html">Tag reference</a></li>
+                <li><a 
href="http://cwiki.apache.org/S2PLUGINS/home.html";>Plugin registry</a></li>
+                <li class="divider"></li>
+                <li><a href="/docs/tutorials.html">Tutorials - 
DEPRECATED</a></li>
+                <li><a href="/docs/faqs.html">FAQs - DEPRECATED</a></li>
+                <li><a href="/docs/guides.html">Guides - DEPRECATED</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 class="divider"></li>
+                <li><a href="/submitting-patches.html">Submitting 
patches</a></li>
+                <li><a href="/builds.html">Source Code</a></li>
+                <li><a href="/coding-standards.html">Coding standards</a></li>
+                <li class="divider"></li>
+                <li><a href="/releases.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://git-wip-us.apache.org/repos/asf?p=struts.git";>Source 
Repository</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/bean-tag.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
+    <h1 id="bean">bean</h1>
+
+<p>Please make sure you have read the <a href="tag-syntax.html">Tag Syntax</a> 
document and understand how tag attribute syntax works.</p>
+
+<h2 id="description">Description</h2>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=javadoc|javadoc=true|url=org.apache.struts2.components.Bean</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<h2 id="parameters">Parameters</h2>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=tagattributes|javadoc=false|url=struts2-tags/bean.html</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<h2 id="examples">Examples</h2>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=examples|javadoc=true|lang=xml|url=org.apache.struts2.components.Bean</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=examplesdescription|javadoc=true|url=org.apache.struts2.components.Bean</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2016 <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>
+
+
+<script>
+$(function() {
+  return $("h2, h3, h4, h5, h6").each(function(i, el) {
+    var $el, id;
+    $el = $(el);
+    id = $el.attr('id');
+    if (id) {
+      $el.removeAttr('id');
+      return $el.before($("<a />").addClass('anchor').attr('name', id));
+    }
+  });
+});
+</script>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/2b2ec9b3/content/tag-developers/cewolf-charts-using-velocity-templates.html
----------------------------------------------------------------------
diff --git a/content/tag-developers/cewolf-charts-using-velocity-templates.html 
b/content/tag-developers/cewolf-charts-using-velocity-templates.html
new file mode 100644
index 0000000..1a6e1ae
--- /dev/null
+++ b/content/tag-developers/cewolf-charts-using-velocity-templates.html
@@ -0,0 +1,307 @@
+<!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 (WIP)</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="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.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="/downloads.html">Downloads</a></li>
+                <li><a href="/announce.html">Announcements</a></li>
+                <li><a href="http://www.apache.org/licenses/";>License</a></li>
+                <li><a 
href="http://apache.org/foundation/thanks.html";>Thanks!</a></li>
+                <li><a 
href="http://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="/maven/project-info.html">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 class="divider"></li>
+                <li><a href="/maven/struts2-core/apidocs/index.html">Struts 
Core API</a></li>
+                <li><a href="/docs/plugins.html">Plugin APIs</a></li>
+                <li><a href="/docs/tag-reference.html">Tag reference</a></li>
+                <li><a 
href="http://cwiki.apache.org/S2PLUGINS/home.html";>Plugin registry</a></li>
+                <li class="divider"></li>
+                <li><a href="/docs/tutorials.html">Tutorials - 
DEPRECATED</a></li>
+                <li><a href="/docs/faqs.html">FAQs - DEPRECATED</a></li>
+                <li><a href="/docs/guides.html">Guides - DEPRECATED</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 class="divider"></li>
+                <li><a href="/submitting-patches.html">Submitting 
patches</a></li>
+                <li><a href="/builds.html">Source Code</a></li>
+                <li><a href="/coding-standards.html">Coding standards</a></li>
+                <li class="divider"></li>
+                <li><a href="/releases.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://git-wip-us.apache.org/repos/asf?p=struts.git";>Source 
Repository</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/cewolf-charts-using-velocity-templates.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
+    <h1 id="cewolf-charts-using-velocity-templates">CeWolf charts using 
Velocity templates</h1>
+
+<p>#####Setup CeWolf#####</p>
+
+<p><strong>This currently only works with the most recent CVS version of 
WebWork but should be available in the upcoming 2.0 beta2</strong></p>
+
+<ol>
+  <li>
+    <p>Go to <a 
href="http://cewolf.sourceforge.net";>http://cewolf.sourceforge.net</a> and grab 
a stable release of CeWolf (at the time of writing, the unstable builds do not 
work with WebWork).</p>
+  </li>
+  <li>
+    <p>Edit your webwork.properties file and add 
“de.laures.cewolf.taglib.tags” to the  property 
“webwork.velocity.tag.path”</p>
+  </li>
+</ol>
+
+<p>Lastly add the CeWolf servlet to web.xml:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+&lt;servlet&gt;
+    &lt;servlet-name&gt;CewolfServlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;de.laures.cewolf.CewolfRenderer&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+
+&lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;CewolfServlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/cewolf/*&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+
+</code></pre>
+</div>
+
+<p>#####Create a DatasetProducer#####</p>
+
+<p>This is the default DatasetProducer from the CeWolf tutorial.</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Map;
+
+import org.jfree.data.DefaultCategoryDataset;
+
+import de.laures.cewolf.DatasetProduceException;
+import de.laures.cewolf.DatasetProducer;
+
+public class PageViewCountData implements DatasetProducer, Serializable {
+
+       // These values would normally not be hard coded but produced by
+       // some kind of data source like a database or a file
+       private final String[] categories =    {"mon", "tue", "wen", "thu", 
"fri", "sat", "sun"};
+       private final String[] seriesNames =    {"cewolfset.jsp", 
"tutorial.jsp", "testpage.jsp", "performancetest.jsp"};
+       private final Integer[] [] values = new Integer[OS:seriesNames.length] 
[OS:categories.length];
+
+       public Object produceDataset(Map params) throws DatasetProduceException 
{
+               DefaultCategoryDataset dataset = new DefaultCategoryDataset();
+               for (int series = 0; series &lt; seriesNames.length; series ++) 
{
+                       int lastY = (int)(Math.random() * 1000 + 1000);
+                       for (int i = 0; i &lt; categories.length; i++) {
+                               final int y = lastY + (int)(Math.random() * 200 
- 100);
+                               lastY = y;
+                               dataset.addValue((double)y, 
seriesNames[OS:series], categories[i]);
+                       }
+               }
+               return dataset;
+       }
+
+       public boolean hasExpired(Map params, Date since) {             
+               return (System.currentTimeMillis() - since.getTime())  &gt; 
5000;
+       }
+
+       public String getProducerId() {
+               return "PageViewCountData DatasetProducer";
+       }
+}
+
+</code></pre>
+</div>
+
+<p>#####Create the Velocity template#####</p>
+
+<p>With the new WebWork refactorings, nested JSP tags with arbitrary 
parameters can be used, so we convert the CeWolf tutorial JSP script to 
Velocity.</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+&lt;jsp:useBean id="pageViews" 
class="de.laures.cewolf.example.PageViewCountData"/&gt;
+&lt;cewolf:chart 
+    id="line" 
+    title="Page View Statistics" 
+    type="line" 
+    xaxislabel="Page" 
+    yaxislabel="Views"&gt;
+    &lt;cewolf:data&gt;
+        &lt;cewolf:producer id="pageViews"/&gt;
+    &lt;/cewolf:data&gt;
+&lt;/cewolf:chart&gt;
+
+&lt;cewolf:img chartid="line" renderer="cewolf" width="400" height="300"/&gt;
+
+</code></pre>
+</div>
+
+<p>In Velocity it looks like this:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+#set( $pageViews = $stack.findValue("new com.PageViewCountData()") )
+$req.session.setAttribute("pageViews", $pageViews ) 
+
+#bodytag( SimpleChart "id=line" "title=Page View Statistics" "type=line" 
"xaxislabel=Page" "yaxslabel=Views" )
+  #bodytag( Data )
+    #tag( Producer "id=pageViews" )
+  #end
+#end
+
+#tag( ChartImg "chartid=line" "renderer=cewolf" "width=400" "height=300" ) 
+
+</code></pre>
+</div>
+
+<p>As you may notice, CeWolf looks up it’s DatasetProducer in the request 
attributes - it has no knowledge of the Velocity context. That’s why we call 
$req.session.setAttribute(). The other attributes (such as the chartid) will be 
set by CeWolf, so we don’t need to care about them.</p>
+
+<p>#####Setup an action to disply the template#####</p>
+
+<p>Now you should be able to fire up an action in the usual way with this 
template as the result and a nice chart should appear.</p>
+
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2016 <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>
+
+
+<script>
+$(function() {
+  return $("h2, h3, h4, h5, h6").each(function(i, el) {
+    var $el, id;
+    $el = $(el);
+    id = $el.attr('id');
+    if (id) {
+      $el.removeAttr('id');
+      return $el.before($("<a />").addClass('anchor').attr('name', id));
+    }
+  });
+});
+</script>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/2b2ec9b3/content/tag-developers/css-xhtml-theme.html
----------------------------------------------------------------------
diff --git a/content/tag-developers/css-xhtml-theme.html 
b/content/tag-developers/css-xhtml-theme.html
new file mode 100644
index 0000000..f2dd8e8
--- /dev/null
+++ b/content/tag-developers/css-xhtml-theme.html
@@ -0,0 +1,329 @@
+<!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 (WIP)</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="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.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="/downloads.html">Downloads</a></li>
+                <li><a href="/announce.html">Announcements</a></li>
+                <li><a href="http://www.apache.org/licenses/";>License</a></li>
+                <li><a 
href="http://apache.org/foundation/thanks.html";>Thanks!</a></li>
+                <li><a 
href="http://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="/maven/project-info.html">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 class="divider"></li>
+                <li><a href="/maven/struts2-core/apidocs/index.html">Struts 
Core API</a></li>
+                <li><a href="/docs/plugins.html">Plugin APIs</a></li>
+                <li><a href="/docs/tag-reference.html">Tag reference</a></li>
+                <li><a 
href="http://cwiki.apache.org/S2PLUGINS/home.html";>Plugin registry</a></li>
+                <li class="divider"></li>
+                <li><a href="/docs/tutorials.html">Tutorials - 
DEPRECATED</a></li>
+                <li><a href="/docs/faqs.html">FAQs - DEPRECATED</a></li>
+                <li><a href="/docs/guides.html">Guides - DEPRECATED</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 class="divider"></li>
+                <li><a href="/submitting-patches.html">Submitting 
patches</a></li>
+                <li><a href="/builds.html">Source Code</a></li>
+                <li><a href="/coding-standards.html">Coding standards</a></li>
+                <li class="divider"></li>
+                <li><a href="/releases.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://git-wip-us.apache.org/repos/asf?p=struts.git";>Source 
Repository</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/css-xhtml-theme.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
+    <h1 id="cssxhtml-theme">css_xhtml theme</h1>
+
+<p>The css_xhtml theme provides all the basics that the <a 
href="#PAGE_14291">simple theme</a> provides and adds several features.</p>
+
+<ul>
+  <li>Standard two-column CSS-based layout, using</li>
+</ul>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;div&gt;
+</code></pre>
+</div>
+<p>for the HTML <a href="#PAGE_14248">Struts Tags</a> (<a 
href="#PAGE_14201">form</a>, <a href="#PAGE_13912">textfield</a>, <a 
href="#PAGE_14127">select</a>, etc)</p>
+
+<ul>
+  <li>
+    <p>Labels for each of the HTML <a href="#PAGE_14248">Struts Tags</a>, 
placed according to the CSS stylesheet</p>
+  </li>
+  <li>
+    <p><em>Validation</em>  and error reporting</p>
+  </li>
+  <li>
+    <p><em>Pure JavaScript Client Side Validation</em>  using 100% JavaScript 
on the browser</p>
+  </li>
+</ul>
+
+<p><strong>Wrapping the Simple Theme</strong></p>
+
+<p>The xhtml theme uses the “wrapping” technique described by <a 
href="#PAGE_13962">Extending Themes</a>. Let’s look at how the HTML tags are 
wrapped by a standard header and footer. For example, in the <a 
href="#PAGE_13912">textfield</a> template,</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>text.ftl
+</code></pre>
+</div>
+<p>, the</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>controlheader.ftl
+</code></pre>
+</div>
+<p>and</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>controlfooter.ftl
+</code></pre>
+</div>
+<p>templates are wrapped around the simple template.</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=all|lang=xml|url=struts2/core/src/main/resources/template/simple/text.ftl</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<p><strong>CSS XHTML theme header</strong></p>
+
+<p>The header used by the HTML tags in the css_xhtml theme is complicated. 
Unlike the <a href="#PAGE_13834">xhtml theme</a>, the CSS theme does not use 
a</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>labelposition
+</code></pre>
+</div>
+<p>attribute. Instead, the label position is defined by CSS rules.</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=all|lang=xml|url=struts2/core/src/main/resources/template/css_xhtml/controlheader.ftl</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<p>Note that the</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>fieldErrors
+</code></pre>
+</div>
+<p>, usually caused by <em>Validation</em> , are displayed in a</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>div
+</code></pre>
+</div>
+<p>block before the element is displayed.</p>
+
+<p><strong>CSS XHTML theme footer</strong></p>
+
+<p>And the</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>controlfooter.ftl
+</code></pre>
+</div>
+<p>contents:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=all|lang=xml|url=struts2/core/src/main/resources/template/css_xhtml/controlfooter.ftl</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<p><strong>Special Interest</strong></p>
+
+<p>Two css_xhtml templates of special interest are</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>head
+</code></pre>
+</div>
+<p>and</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>form
+</code></pre>
+</div>
+<p>.</p>
+
+<p><strong>Head template</strong></p>
+
+<p>The css_xhtml <a href="#PAGE_13997">head</a> template is similar to the 
xhtml head template. The difference is that CSS is used to provide the 
layout.</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=all|lang=xml|url=struts2/core/src/main/resources/template/css_xhtml/head.ftl</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<p>The head includes a style sheet.</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=all|lang=xml|url=struts2/core/src/main/resources/template/css_xhtml/styles.css</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<p><strong>Form template</strong></p>
+
+<p>The css_xhtml <a href="#PAGE_14201">form</a> template is almost exactly 
like the <em>xhtml form template</em> , including support for <em>Pure 
JavaScript Client Side Validation</em> . The difference is that instead of 
printing out an opening and closing</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;table&gt;
+</code></pre>
+</div>
+<p>element, there are no elements. Instead, the CSS rules for the individual 
HTML tags are assumed to handle all display logic. However, as noted, 
client-side validation is still supported.</p>
+
+<p><strong>css_xhtml form template</strong></p>
+
+<p>The css_xhtml <a href="#PAGE_14201">form</a> template is almost exactly 
like the <em>xhtml form template</em> , including support for <em>Pure 
JavaScript Client Side Validation</em> . The only difference is that instead of 
printing out an opening and closing</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;table&gt;
+</code></pre>
+</div>
+<p>element, there are no elements. Instead, the CSS rules for the individual 
HTML tags are assumed to handle all dislay logic. However, as noted, client 
side validation is still supported.</p>
+
+<p><strong>css_xhtml head template</strong></p>
+
+<p>The css_xhtml <a href="#PAGE_13997">head</a> template is very similar to 
the <em>xhtml head template</em> . The only difference is that CSS that is 
included is specifically designed to provide the layout for the <a 
href="#PAGE_14215">css_xhtml theme</a>. The contents of 
<strong>head.ftl</strong> are:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=all|lang=xml|url=struts2/core/src/main/resources/template/css_xhtml/head.ftl</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<p>The contents of <strong>styles.css</strong> are:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=all|lang=xml|url=struts2/core/src/main/resources/template/css_xhtml/styles.css</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2016 <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>
+
+
+<script>
+$(function() {
+  return $("h2, h3, h4, h5, h6").each(function(i, el) {
+    var $el, id;
+    $el = $(el);
+    id = $el.attr('id');
+    if (id) {
+      $el.removeAttr('id');
+      return $el.before($("<a />").addClass('anchor').attr('name', id));
+    }
+  });
+});
+</script>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/2b2ec9b3/content/tag-developers/date-tag.html
----------------------------------------------------------------------
diff --git a/content/tag-developers/date-tag.html 
b/content/tag-developers/date-tag.html
new file mode 100644
index 0000000..d78f24d
--- /dev/null
+++ b/content/tag-developers/date-tag.html
@@ -0,0 +1,203 @@
+<!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 (WIP)</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="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.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="/downloads.html">Downloads</a></li>
+                <li><a href="/announce.html">Announcements</a></li>
+                <li><a href="http://www.apache.org/licenses/";>License</a></li>
+                <li><a 
href="http://apache.org/foundation/thanks.html";>Thanks!</a></li>
+                <li><a 
href="http://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="/maven/project-info.html">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 class="divider"></li>
+                <li><a href="/maven/struts2-core/apidocs/index.html">Struts 
Core API</a></li>
+                <li><a href="/docs/plugins.html">Plugin APIs</a></li>
+                <li><a href="/docs/tag-reference.html">Tag reference</a></li>
+                <li><a 
href="http://cwiki.apache.org/S2PLUGINS/home.html";>Plugin registry</a></li>
+                <li class="divider"></li>
+                <li><a href="/docs/tutorials.html">Tutorials - 
DEPRECATED</a></li>
+                <li><a href="/docs/faqs.html">FAQs - DEPRECATED</a></li>
+                <li><a href="/docs/guides.html">Guides - DEPRECATED</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 class="divider"></li>
+                <li><a href="/submitting-patches.html">Submitting 
patches</a></li>
+                <li><a href="/builds.html">Source Code</a></li>
+                <li><a href="/coding-standards.html">Coding standards</a></li>
+                <li class="divider"></li>
+                <li><a href="/releases.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://git-wip-us.apache.org/repos/asf?p=struts.git";>Source 
Repository</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/date-tag.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
+    <h1 id="date">date</h1>
+
+<p><strong>Description</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=javadoc|javadoc=true|url=org.apache.struts2.components.Date</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<p><strong>Parameters</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=tagattributes|javadoc=false|url=struts2-tags/date.html</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<p><strong>Examples</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=example|lang=xml|javadoc=true|url=org.apache.struts2.components.Date</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2016 <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>
+
+
+<script>
+$(function() {
+  return $("h2, h3, h4, h5, h6").each(function(i, el) {
+    var $el, id;
+    $el = $(el);
+    id = $el.attr('id');
+    if (id) {
+      $el.removeAttr('id');
+      return $el.before($("<a />").addClass('anchor').attr('name', id));
+    }
+  });
+});
+</script>
+
+</body>
+</html>

Reply via email to