http://git-wip-us.apache.org/repos/asf/struts-site/blob/124e36c4/content/docs/form.html
----------------------------------------------------------------------
diff --git a/content/docs/form.html b/content/docs/form.html
new file mode 100644
index 0000000..2a572a9
--- /dev/null
+++ b/content/docs/form.html
@@ -0,0 +1,198 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- 
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License. 
+-->
+<html>
+<head>
+    <link type="text/css" rel="stylesheet" 
href="https://struts.apache.org/css/default.css";>
+    <style type="text/css">
+        .dp-highlighter {
+            width:95% !important;
+        }
+    </style>
+    <style type="text/css">
+        .footer {
+            background-image:      
url('https://cwiki.apache.org/confluence/images/border/border_bottom.gif');
+            background-repeat:     repeat-x;
+            background-position:   left top;
+            padding-top:           4px;
+            color:                 #666;
+        }
+    </style>
+    <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
+    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
+    <script src='https://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushCss.js' 
type='text/javascript'></script>
+    <script type="text/javascript">
+        SyntaxHighlighter.defaults['toolbar'] = false;
+        SyntaxHighlighter.all();
+    </script>
+    <script type="text/javascript" language="javascript">
+        var hide = null;
+        var show = null;
+        var children = null;
+
+        function init() {
+            /* Search form initialization */
+            var form = document.forms['search'];
+            if (form != null) {
+                form.elements['domains'].value = location.hostname;
+                form.elements['sitesearch'].value = location.hostname;
+            }
+
+            /* Children initialization */
+            hide = document.getElementById('hide');
+            show = document.getElementById('show');
+            children = document.all != null ?
+                    document.all['children'] :
+                    document.getElementById('children');
+            if (children != null) {
+                children.style.display = 'none';
+                show.style.display = 'inline';
+                hide.style.display = 'none';
+            }
+        }
+
+        function showChildren() {
+            children.style.display = 'block';
+            show.style.display = 'none';
+            hide.style.display = 'inline';
+        }
+
+        function hideChildren() {
+            children.style.display = 'none';
+            show.style.display = 'inline';
+            hide.style.display = 'none';
+        }
+    </script>
+    <title>form</title>
+</head>
+<body onload="init()">
+<table border="0" cellpadding="2" cellspacing="0" width="100%">
+    <tr class="topBar">
+        <td align="left" valign="middle" class="topBarDiv" align="left" nowrap>
+            &nbsp;<a href="home.html">Home</a>&nbsp;&gt;&nbsp;<a 
href="guides.html">Guides</a>&nbsp;&gt;&nbsp;<a 
href="tag-developers-guide.html">Tag Developers Guide</a>&nbsp;&gt;&nbsp;<a 
href="struts-tags.html">Struts Tags</a>&nbsp;&gt;&nbsp;<a 
href="tag-reference.html">Tag Reference</a>&nbsp;&gt;&nbsp;<a 
href="ui-tag-reference.html">UI Tag Reference</a>&nbsp;&gt;&nbsp;<a 
href="form.html">form</a>
+        </td>
+        <td align="right" valign="middle" nowrap>
+            <form name="search" action="https://www.google.com/search"; 
method="get">
+                <input type="hidden" name="ie" value="UTF-8" />
+                <input type="hidden" name="oe" value="UTF-8" />
+                <input type="hidden" name="domains" value="" />
+                <input type="hidden" name="sitesearch" value="" />
+                <input type="text" name="q" maxlength="255" value="" />
+                <input type="submit" name="btnG" value="Google Search" />
+            </form>
+        </td>
+    </tr>
+</table>
+
+<div id="PageContent">
+    <div class="pageheader" style="padding: 6px 0px 0px 0px;">
+        <!-- We'll enable this once we figure out how to access (and save) the 
logo resource -->
+        <!--img src="/wiki/images/confluence_logo.gif" style="float: left; 
margin: 4px 4px 4px 10px;" border="0"-->
+        <div style="margin: 0px 10px 0px 10px" class="smalltext">Apache Struts 
2 Documentation</div>
+        <div style="margin: 0px 10px 8px 10px"  class="pagetitle">form</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=14201";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/notep_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Edit Page"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=14201";>Edit
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/browse_space.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Browse Space"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW";>Browse 
Space</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=14201";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/add_page_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Add Page"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=14201";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=14201";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Add News"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=14201";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><div 
class="confluence-information-macro confluence-information-macro-note"><span 
class="aui-icon aui-icon-small aui-iconfont-warning 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Please make sure you have read the 
<a shape="rect" href="tag-syntax.html">Tag Syntax</a> document and understand 
how tag attribute syntax works.</p></div></div>
+
+<h2 id="form-Description">Description</h2>
+
+<p></p><p>
+Renders HTML an input form.
+</p>
+
+<p></p><p>
+The remote form allows the form to be submitted without the page being 
refreshed. The results from the form
+can be inserted into any HTML element on the page.
+</p>
+<p>
+NOTE:<br clear="none">
+The order / logic in determining the posting url of the generated HTML form is 
as follows:
+</p>
+
+<p></p><ol><li>
+If the action attribute is not specified, then the current request will be 
used to
+determine the posting url
+</li><li>
+If the action is given, Struts will try to obtain an ActionConfig. This will be
+successful if the action attribute is a valid action alias defined struts.xml.
+</li><li>
+If the action is given and is not an action alias defined in struts.xml, Struts
+will used the action attribute as if it is the posting url, separting the 
namespace
+from it and using UrlHelper to generate the final url.
+</li></ol>
+
+
+<h2 id="form-Parameters">Parameters</h2>
+
+<p><table width="100%"><tr><td colspan="6" rowspan="1"><h4>Dynamic Attributes 
Allowed:</h4> true</td></tr><tr><td colspan="6" 
rowspan="1">&#160;</td></tr><tr><th align="left" colspan="1" rowspan="1" 
valign="top"><h4>Name</h4></th><th align="left" colspan="1" rowspan="1" 
valign="top"><h4>Required</h4></th><th align="left" colspan="1" rowspan="1" 
valign="top"><h4>Default</h4></th><th align="left" colspan="1" rowspan="1" 
valign="top"><h4>Evaluated</h4></th><th align="left" colspan="1" rowspan="1" 
valign="top"><h4>Type</h4></th><th align="left" colspan="1" rowspan="1" 
valign="top"><h4>Description</h4></th></tr><tr><td align="left" colspan="1" 
rowspan="1" valign="top">acceptcharset</td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" valign="top">T
 he accepted charsets for this form. The values may be comma or blank 
delimited.</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">accesskey</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the html accesskey attribute on rendered html 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">action</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">current action</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set action name to submit to, without .action 
suffix</td></tr><tr><td alig
 n="left" colspan="1" rowspan="1" valign="top">class</td><td align="left" 
colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" 
rowspan="1" valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">The css class to use for element - it's an alias of cssClass 
attribute.</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">cssClass</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">The css class to use for element</td></tr><tr><td align="left" 
colspan="1" rowspan="1" valign="top">cssErrorClass</td><td align="left" 
colspan="1" rowspan="1" valign="top">false
 </td><td align="left" colspan="1" rowspan="1" valign="top"></td><td 
align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" 
colspan="1" rowspan="1" valign="top">String</td><td align="left" colspan="1" 
rowspan="1" valign="top">The css error class to use for 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">cssErrorStyle</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">The css error style definitions for element to 
use</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">cssStyle</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><t
 d align="left" colspan="1" rowspan="1" valign="top">String</td><td 
align="left" colspan="1" rowspan="1" valign="top">The css style definitions for 
element to use</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">disabled</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the html disabled attribute on rendered html 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">enctype</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">HTML fo
 rm enctype attribute</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">errorPosition</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Define error position of form element 
(top|bottom)</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">focusElement</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Id of element that will receive the focus when page 
loads.</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">id</td><td align="
 left" colspan="1" rowspan="1" valign="top">false</td><td align="left" 
colspan="1" rowspan="1" valign="top"></td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">HTML id attribute</td></tr><tr><td align="left" colspan="1" 
rowspan="1" valign="top">includeContext</td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">true</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1" 
valign="top">Whether actual context should be included in URL</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">javascriptTooltip</td><td 
align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" 
colspan="1" rowspan="1" valign="top">false</td><td align="left" cols
 pan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" 
rowspan="1" valign="top">Boolean</td><td align="left" colspan="1" rowspan="1" 
valign="top">Use JavaScript to generate tooltips</td></tr><tr><td align="left" 
colspan="1" rowspan="1" valign="top">key</td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the key (name, value, label) for this particular 
component</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">label</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan=
 "1" rowspan="1" valign="top">Label expression used for rendering an element 
specific label</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">labelSeparator</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">:</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">String that will be appended to the label</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">labelposition</td><td 
align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" 
colspan="1" rowspan="1" valign="top"></td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Define label position of form element (top/left)</td></tr><tr><td 
align="left" c
 olspan="1" rowspan="1" valign="top">method</td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">HTML form method attribute</td></tr><tr><td align="left" 
colspan="1" rowspan="1" valign="top">name</td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">The name to set for element</td></tr><tr><td align="left" 
colspan="1" rowspan="1" valign="top">namespace</td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">current 
 namespace</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Namespace for action to submit to</td></tr><tr><td align="left" 
colspan="1" rowspan="1" valign="top">onblur</td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" valign="top"> 
Set the html onblur attribute on rendered html element</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">onchange</td><td align="left" 
colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" 
rowspan="1" valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">Strin
 g</td><td align="left" colspan="1" rowspan="1" valign="top">Set the html 
onchange attribute on rendered html element</td></tr><tr><td align="left" 
colspan="1" rowspan="1" valign="top">onclick</td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the html onclick attribute on rendered html 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">ondblclick</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the html ondblclick attribute on rendered html 
 element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">onfocus</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the html onfocus attribute on rendered html 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">onkeydown</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the html onkeydown attribute on rendered html 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">onkeypress</td><td align="left" cols
 pan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" 
rowspan="1" valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the html onkeypress attribute on rendered html 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">onkeyup</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the html onkeyup attribute on rendered html 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">onmousedown</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td al
 ign="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" 
colspan="1" rowspan="1" valign="top">String</td><td align="left" colspan="1" 
rowspan="1" valign="top">Set the html onmousedown attribute on rendered html 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">onmousemove</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the html onmousemove attribute on rendered html 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">onmouseout</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" v
 align="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the html onmouseout attribute on rendered html 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">onmouseover</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the html onmouseover attribute on rendered html 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">onmouseup</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the html onmouseup at
 tribute on rendered html element</td></tr><tr><td align="left" colspan="1" 
rowspan="1" valign="top">onreset</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">HTML onreset attribute</td></tr><tr><td align="left" colspan="1" 
rowspan="1" valign="top">onselect</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the html onselect attribute on rendered html 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">onsubmit</td><td align="left" colspan="1" rows
 pan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">HTML onsubmit attribute</td></tr><tr><td align="left" colspan="1" 
rowspan="1" valign="top">openTemplate</td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set template to use for opening the rendered 
html.</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">portletMode</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" valign="top"
 >false</td><td align="left" colspan="1" rowspan="1" 
 >valign="top">String</td><td align="left" colspan="1" rowspan="1" 
 >valign="top">The portlet mode to display after the form 
 >submit</td></tr><tr><td align="left" colspan="1" rowspan="1" 
 >valign="top">requiredLabel</td><td align="left" colspan="1" rowspan="1" 
 >valign="top">false</td><td align="left" colspan="1" rowspan="1" 
 >valign="top">false</td><td align="left" colspan="1" rowspan="1" 
 >valign="top">false</td><td align="left" colspan="1" rowspan="1" 
 >valign="top">Boolean</td><td align="left" colspan="1" rowspan="1" 
 >valign="top">If set to true, the rendered element will indicate that input is 
 >required</td></tr><tr><td align="left" colspan="1" rowspan="1" 
 >valign="top">requiredPosition</td><td align="left" colspan="1" rowspan="1" 
 >valign="top">false</td><td align="left" colspan="1" rowspan="1" 
 >valign="top"></td><td align="left" colspan="1" rowspan="1" 
 >valign="top">false</td><td align="left" colspan="1" rowspan="1" 
 >valign="top">String</td><td al
 ign="left" colspan="1" rowspan="1" valign="top">Define required position of 
required form element (left|right)</td></tr><tr><td align="left" colspan="1" 
rowspan="1" valign="top">style</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">The css style definitions for element to use - it's an alias of 
cssStyle attribute.</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">tabindex</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the html tabindex attribute o
 n rendered html element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">target</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">HTML form target attribute</td></tr><tr><td align="left" 
colspan="1" rowspan="1" valign="top">template</td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">The template (other than default) to use for rendering the 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">templateDir</td><td align="left" colspan="
 1" rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">The template directory.</td></tr><tr><td align="left" colspan="1" 
rowspan="1" valign="top">theme</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">The theme (other than default) to use for rendering the 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">title</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" valig
 n="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the html title attribute on rendered html 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">tooltip</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Set the tooltip of this particular component</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">tooltipConfig</td><td 
align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" 
colspan="1" rowspan="1" valign="top"></td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1
 " valign="top">Deprecated. Use individual tooltip configuration attributes 
instead.</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">tooltipCssClass</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">StrutsTTClassic</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">CSS class applied to JavaScrip tooltips</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">tooltipDelay</td><td 
align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" 
colspan="1" rowspan="1" valign="top">Classic</td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Delay in milliseconds, before showing JavaScript tooltips 
</td></tr>
 <tr><td align="left" colspan="1" rowspan="1" 
valign="top">tooltipIconPath</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="left" colspan="1" rowspan="1" 
valign="top">Icon path used for image that will have the 
tooltip</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">validate</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1" 
valign="top">Whether client side/remote validation should be performed. Only 
useful with theme xhtml/ajax</td></tr><tr><td align="left" colspan="1" 
rowspan="1" valign="top">value</td
 ><td align="left" colspan="1" rowspan="1" valign="top">false</td><td 
 >align="left" colspan="1" rowspan="1" valign="top"></td><td align="left" 
 >colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" 
 >rowspan="1" valign="top">String</td><td align="left" colspan="1" rowspan="1" 
 >valign="top">Preset the value of input element.</td></tr><tr><td align="left" 
 >colspan="1" rowspan="1" valign="top">windowState</td><td align="left" 
 >colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" 
 >rowspan="1" valign="top"></td><td align="left" colspan="1" rowspan="1" 
 >valign="top">false</td><td align="left" colspan="1" rowspan="1" 
 >valign="top">String</td><td align="left" colspan="1" rowspan="1" 
 >valign="top">The window state to display after the form 
 >submit</td></tr></table></p>
+
+<h2 id="form-Examples">Examples</h2>
+
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+
+&lt;s:form ... /&gt;
+
+]]></script>
+</div></div>
+
+<h2 id="form-Validation">Validation</h2>
+
+<p>There are two flavours <a shape="rect" 
href="client-side-validation.html">Client Side Validation</a>, depending on the 
theme you are using (xhtml, ajax, etc). If you are using the <a shape="rect" 
href="xhtml-theme.html">xhtml theme</a> or <a shape="rect" 
href="cssxhtml-theme.html">css_xhtml theme</a>, pure client side validation 
will be used. If you are using the <a shape="rect" href="ajax-theme.html">ajax 
theme</a>, a special AJAX-based validation will take place. Read the <a 
shape="rect" href="client-side-validation.html">Client Side Validation</a> docs 
for more information.</p></div>
+        </div>
+
+        
+    </div>
+</div>
+<div class="footer">
+    Generated by CXF SiteExporter
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/124e36c4/content/docs/formatting-dates-and-numbers.html
----------------------------------------------------------------------
diff --git a/content/docs/formatting-dates-and-numbers.html 
b/content/docs/formatting-dates-and-numbers.html
new file mode 100644
index 0000000..77eafa8
--- /dev/null
+++ b/content/docs/formatting-dates-and-numbers.html
@@ -0,0 +1,222 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- 
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License. 
+-->
+<html>
+<head>
+    <link type="text/css" rel="stylesheet" 
href="https://struts.apache.org/css/default.css";>
+    <style type="text/css">
+        .dp-highlighter {
+            width:95% !important;
+        }
+    </style>
+    <style type="text/css">
+        .footer {
+            background-image:      
url('https://cwiki.apache.org/confluence/images/border/border_bottom.gif');
+            background-repeat:     repeat-x;
+            background-position:   left top;
+            padding-top:           4px;
+            color:                 #666;
+        }
+    </style>
+    <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
+    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
+    <script src='https://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushCss.js' 
type='text/javascript'></script>
+    <script type="text/javascript">
+        SyntaxHighlighter.defaults['toolbar'] = false;
+        SyntaxHighlighter.all();
+    </script>
+    <script type="text/javascript" language="javascript">
+        var hide = null;
+        var show = null;
+        var children = null;
+
+        function init() {
+            /* Search form initialization */
+            var form = document.forms['search'];
+            if (form != null) {
+                form.elements['domains'].value = location.hostname;
+                form.elements['sitesearch'].value = location.hostname;
+            }
+
+            /* Children initialization */
+            hide = document.getElementById('hide');
+            show = document.getElementById('show');
+            children = document.all != null ?
+                    document.all['children'] :
+                    document.getElementById('children');
+            if (children != null) {
+                children.style.display = 'none';
+                show.style.display = 'inline';
+                hide.style.display = 'none';
+            }
+        }
+
+        function showChildren() {
+            children.style.display = 'block';
+            show.style.display = 'none';
+            hide.style.display = 'inline';
+        }
+
+        function hideChildren() {
+            children.style.display = 'none';
+            show.style.display = 'inline';
+            hide.style.display = 'none';
+        }
+    </script>
+    <title>Formatting Dates and Numbers</title>
+</head>
+<body onload="init()">
+<table border="0" cellpadding="2" cellspacing="0" width="100%">
+    <tr class="topBar">
+        <td align="left" valign="middle" class="topBarDiv" align="left" nowrap>
+            &nbsp;<a href="home.html">Home</a>&nbsp;&gt;&nbsp;<a 
href="guides.html">Guides</a>&nbsp;&gt;&nbsp;<a 
href="core-developers-guide.html">Core Developers Guide</a>&nbsp;&gt;&nbsp;<a 
href="formatting-dates-and-numbers.html">Formatting Dates and Numbers</a>
+        </td>
+        <td align="right" valign="middle" nowrap>
+            <form name="search" action="https://www.google.com/search"; 
method="get">
+                <input type="hidden" name="ie" value="UTF-8" />
+                <input type="hidden" name="oe" value="UTF-8" />
+                <input type="hidden" name="domains" value="" />
+                <input type="hidden" name="sitesearch" value="" />
+                <input type="text" name="q" maxlength="255" value="" />
+                <input type="submit" name="btnG" value="Google Search" />
+            </form>
+        </td>
+    </tr>
+</table>
+
+<div id="PageContent">
+    <div class="pageheader" style="padding: 6px 0px 0px 0px;">
+        <!-- We'll enable this once we figure out how to access (and save) the 
logo resource -->
+        <!--img src="/wiki/images/confluence_logo.gif" style="float: left; 
margin: 4px 4px 4px 10px;" border="0"-->
+        <div style="margin: 0px 10px 0px 10px" class="smalltext">Apache Struts 
2 Documentation</div>
+        <div style="margin: 0px 10px 8px 10px"  class="pagetitle">Formatting 
Dates and Numbers</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=75443";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/notep_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Edit Page"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=75443";>Edit
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/browse_space.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Browse Space"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW";>Browse 
Space</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=75443";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/add_page_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Add Page"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=75443";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=75443";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Add News"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=75443";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><h2 
id="FormattingDatesandNumbers-DefiningFormats">Defining Formats</h2>
+<p>Struts2 supports localization (l10n) aware formatting of dates, times and 
numbers very easily, utilizing Java's built-in date formatting features.</p>
+
+<p>As seen in the <a shape="rect" href="localization.html">Localization</a> 
chapter, it is quite easy to define hierarchical resource bundles with Struts2, 
giving the developer the opportunity to define locale dependent message 
formats. This is the entry point to define the needed date, time and number 
formats. Your default properties could contain the following generic 
formats:</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+format.time = {0,time}
+format.number = {0,number,#0.0##}
+format.percent = {0,number,##0.00'%'}
+format.money = {0,number,\u00A4##0.00}
+</pre>
+</div></div>
+<p>An appropriate en_US format definition extension could look like this:</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+format.date = {0,date,MM/dd/yy}
+</pre>
+</div></div>
+<p>In parallel, you could add the following to your de_DE bundle:</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+format.date = {0,date,dd.MM.yyyy}
+</pre>
+</div></div>
+<p>Read more on how to define message formats in Sun's Java API docs for <a 
shape="rect" class="external-link" 
href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/MessageFormat.html"; 
rel="nofollow">MessageFormat</a>.</p>
+
+<p>Now that we have our formats set up, it is quite easy to use them in our 
views.</p>
+
+<h2 
id="FormattingDatesandNumbers-Formattingoutputusingthes:texttag">Formatting 
output using the s:text tag</h2>
+
+<p>Given you had a Float value myMoneyValue, accessible through the getter 
getMyMoneyValue in your action, the following code would print out localized 
representation of the value as a currency amount, using the format.money 
message format defined above with a <a shape="rect" href="text.html">s:text</a> 
tag:</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+&lt;s:text name="format.money"&gt;
+    &lt;s:param name="value" value="myMoneyValue"/&gt;
+&lt;/s:text&gt;
+</pre>
+</div></div>
+<p>The (first) parameter defines the value which is to replace the '0' 
placeholder in the defined message format.<br clear="none">
+Another example, formatting a date value:</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+&lt;s:text name="format.date"&gt;&lt;s:param 
value="dueDate"/&gt;&lt;/s:text&gt;
+</pre>
+</div></div>
+<div class="confluence-information-macro 
confluence-information-macro-note"><span class="aui-icon aui-icon-small 
aui-iconfont-warning confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>While the s:text tag is very 
useful to format numbers, date formatting has become a lot easier thanks to the 
<a shape="rect" href="date.html">s:date</a> tag.</p></div></div>
+
+<h2 id="FormattingDatesandNumbers-LocalizingformdatawithgetText">Localizing 
form data with getText</h2>
+<p>Placing a textfield in a form like this</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+&lt;s:textfield key="orderItem.price" /&gt;
+</pre>
+</div></div>
+<p>to input a number, one might have noticed that the number is always shown 
in the Java default number format. Not only that this is not "nice", if you are 
in a non-en locale, it will also cause trouble when submitting the form since 
type conversion is locale aware. The solution is to again use the message 
formats as defined above, by using the getText Method of ActionSupport:</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+&lt;s:textfield key="orderItem.price" 
value="%{getText('format.number',{orderItem.price})}" /&gt;
+</pre>
+</div></div>
+<p>This maps to the method signature getText( String key, Object[] params ) in 
ActionSupport.</p>
+
+<h2 
id="FormattingDatesandNumbers-UsinggetFormatted()withconversionsupport">Using 
getFormatted() with conversion support</h2>
+<p>A new method getFormatted was added to ActionSupport (which can be 
implemented in your base action) to support formatting and conversion errors 
with I10N.<br clear="none">
+You can place a code like below</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+&lt;s:textfield key="user.born" 
value="%{getFormatted('format.number','user.born')}" /&gt;
+</pre>
+</div></div>
+<p>to get support for I10N and also to support conversion errors.</p></div>
+        </div>
+
+        
+    </div>
+</div>
+<div class="footer">
+    Generated by CXF SiteExporter
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/124e36c4/content/docs/freemarker-result.html
----------------------------------------------------------------------
diff --git a/content/docs/freemarker-result.html 
b/content/docs/freemarker-result.html
new file mode 100644
index 0000000..5c8a45c
--- /dev/null
+++ b/content/docs/freemarker-result.html
@@ -0,0 +1,166 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- 
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License. 
+-->
+<html>
+<head>
+    <link type="text/css" rel="stylesheet" 
href="https://struts.apache.org/css/default.css";>
+    <style type="text/css">
+        .dp-highlighter {
+            width:95% !important;
+        }
+    </style>
+    <style type="text/css">
+        .footer {
+            background-image:      
url('https://cwiki.apache.org/confluence/images/border/border_bottom.gif');
+            background-repeat:     repeat-x;
+            background-position:   left top;
+            padding-top:           4px;
+            color:                 #666;
+        }
+    </style>
+    <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
+    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
+    <script src='https://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushCss.js' 
type='text/javascript'></script>
+    <script type="text/javascript">
+        SyntaxHighlighter.defaults['toolbar'] = false;
+        SyntaxHighlighter.all();
+    </script>
+    <script type="text/javascript" language="javascript">
+        var hide = null;
+        var show = null;
+        var children = null;
+
+        function init() {
+            /* Search form initialization */
+            var form = document.forms['search'];
+            if (form != null) {
+                form.elements['domains'].value = location.hostname;
+                form.elements['sitesearch'].value = location.hostname;
+            }
+
+            /* Children initialization */
+            hide = document.getElementById('hide');
+            show = document.getElementById('show');
+            children = document.all != null ?
+                    document.all['children'] :
+                    document.getElementById('children');
+            if (children != null) {
+                children.style.display = 'none';
+                show.style.display = 'inline';
+                hide.style.display = 'none';
+            }
+        }
+
+        function showChildren() {
+            children.style.display = 'block';
+            show.style.display = 'none';
+            hide.style.display = 'inline';
+        }
+
+        function hideChildren() {
+            children.style.display = 'none';
+            show.style.display = 'inline';
+            hide.style.display = 'none';
+        }
+    </script>
+    <title>FreeMarker Result</title>
+</head>
+<body onload="init()">
+<table border="0" cellpadding="2" cellspacing="0" width="100%">
+    <tr class="topBar">
+        <td align="left" valign="middle" class="topBarDiv" align="left" nowrap>
+            &nbsp;<a href="home.html">Home</a>&nbsp;&gt;&nbsp;<a 
href="guides.html">Guides</a>&nbsp;&gt;&nbsp;<a 
href="core-developers-guide.html">Core Developers Guide</a>&nbsp;&gt;&nbsp;<a 
href="result-types.html">Result Types</a>&nbsp;&gt;&nbsp;<a 
href="freemarker-result.html">FreeMarker Result</a>
+        </td>
+        <td align="right" valign="middle" nowrap>
+            <form name="search" action="https://www.google.com/search"; 
method="get">
+                <input type="hidden" name="ie" value="UTF-8" />
+                <input type="hidden" name="oe" value="UTF-8" />
+                <input type="hidden" name="domains" value="" />
+                <input type="hidden" name="sitesearch" value="" />
+                <input type="text" name="q" maxlength="255" value="" />
+                <input type="submit" name="btnG" value="Google Search" />
+            </form>
+        </td>
+    </tr>
+</table>
+
+<div id="PageContent">
+    <div class="pageheader" style="padding: 6px 0px 0px 0px;">
+        <!-- We'll enable this once we figure out how to access (and save) the 
logo resource -->
+        <!--img src="/wiki/images/confluence_logo.gif" style="float: left; 
margin: 4px 4px 4px 10px;" border="0"-->
+        <div style="margin: 0px 10px 0px 10px" class="smalltext">Apache Struts 
2 Documentation</div>
+        <div style="margin: 0px 10px 8px 10px"  class="pagetitle">FreeMarker 
Result</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=14100";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/notep_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Edit Page"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=14100";>Edit
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/browse_space.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Browse Space"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW";>Browse 
Space</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=14100";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/add_page_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Add Page"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=14100";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=14100";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Add News"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=14100";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><p>Renders a view using the Freemarker 
template engine. The <code>FreemarkarManager</code>&#160;class configures the 
template loaders so that the template location can be either</p><ul 
style="list-style-type: square;"><li>relative to the web root folder, 
e.g.:&#160;<code>/WEB-INF/views/home.ftl</code></li><li>a classpath resource, 
e.g.: 
<code>/com/company/web/views/home.ftl</code></li></ul><p>&#160;</p><p>Also see 
<a shape="rect" href="freemarker-support.html">Freemarker Support</a>.</p><h2 
id="FreeMarkerResult-Parameters">Parameters</h2><ul style="list-style-type: 
square;"><li><strong>location</strong> (default) - the location of the template 
to process.</li><li><strong>parse&#160;</strong>- true by default. If set to 
false, the location param will not be parsed for 
expressions.</li><li><strong>contentType</strong>&#160;- defaults to 
<code>text/html</code>&#160;unless 
specified.</li><li><strong>writeIfCompleted</strong>&#160;- <code>false</co
 de>&#160;by default, write to stream only if there isn't any error processing 
the template. Setting <code>template_exception_handler=rethrow</code>&#160;in 
<code>freemarker.properties</code>&#160;will have the same effect.</li></ul><h2 
id="FreeMarkerResult-Examples">Examples</h2><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;result name="success" 
type="freemarker"&gt;foo.ftl&lt;/result&gt;</pre>
+</div></div><p>&#160;</p><p>&#160;</p></div>
+        </div>
+
+                    <div class="tabletitle">
+                Children
+            <span class="smalltext" id="show" style="display: inline;">
+              <a href="javascript:showChildren()">Show Children</a></span>
+            <span class="smalltext" id="hide" style="display: none;">
+              <a href="javascript:hideChildren()">Hide Children</a></span>
+            </div>
+            <div class="greybox" id="children" style="display: none;">
+                                                    $page.link($child)
+                    <span class="smalltext">(Apache Struts 2 
Documentation)</span>
+                    <br>
+                            </div>
+        
+    </div>
+</div>
+<div class="footer">
+    Generated by CXF SiteExporter
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/124e36c4/content/docs/freemarker-support.html
----------------------------------------------------------------------
diff --git a/content/docs/freemarker-support.html 
b/content/docs/freemarker-support.html
new file mode 100644
index 0000000..2bc377d
--- /dev/null
+++ b/content/docs/freemarker-support.html
@@ -0,0 +1,190 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- 
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License. 
+-->
+<html>
+<head>
+    <link type="text/css" rel="stylesheet" 
href="https://struts.apache.org/css/default.css";>
+    <style type="text/css">
+        .dp-highlighter {
+            width:95% !important;
+        }
+    </style>
+    <style type="text/css">
+        .footer {
+            background-image:      
url('https://cwiki.apache.org/confluence/images/border/border_bottom.gif');
+            background-repeat:     repeat-x;
+            background-position:   left top;
+            padding-top:           4px;
+            color:                 #666;
+        }
+    </style>
+    <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
+    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
+    <script src='https://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushCss.js' 
type='text/javascript'></script>
+    <script type="text/javascript">
+        SyntaxHighlighter.defaults['toolbar'] = false;
+        SyntaxHighlighter.all();
+    </script>
+    <script type="text/javascript" language="javascript">
+        var hide = null;
+        var show = null;
+        var children = null;
+
+        function init() {
+            /* Search form initialization */
+            var form = document.forms['search'];
+            if (form != null) {
+                form.elements['domains'].value = location.hostname;
+                form.elements['sitesearch'].value = location.hostname;
+            }
+
+            /* Children initialization */
+            hide = document.getElementById('hide');
+            show = document.getElementById('show');
+            children = document.all != null ?
+                    document.all['children'] :
+                    document.getElementById('children');
+            if (children != null) {
+                children.style.display = 'none';
+                show.style.display = 'inline';
+                hide.style.display = 'none';
+            }
+        }
+
+        function showChildren() {
+            children.style.display = 'block';
+            show.style.display = 'none';
+            hide.style.display = 'inline';
+        }
+
+        function hideChildren() {
+            children.style.display = 'none';
+            show.style.display = 'inline';
+            hide.style.display = 'none';
+        }
+    </script>
+    <title>Freemarker Support</title>
+</head>
+<body onload="init()">
+<table border="0" cellpadding="2" cellspacing="0" width="100%">
+    <tr class="topBar">
+        <td align="left" valign="middle" class="topBarDiv" align="left" nowrap>
+            &nbsp;<a href="home.html">Home</a>&nbsp;&gt;&nbsp;<a 
href="guides.html">Guides</a>&nbsp;&gt;&nbsp;<a 
href="core-developers-guide.html">Core Developers Guide</a>&nbsp;&gt;&nbsp;<a 
href="result-types.html">Result Types</a>&nbsp;&gt;&nbsp;<a 
href="freemarker-result.html">FreeMarker Result</a>&nbsp;&gt;&nbsp;<a 
href="freemarker-support.html">Freemarker Support</a>
+        </td>
+        <td align="right" valign="middle" nowrap>
+            <form name="search" action="https://www.google.com/search"; 
method="get">
+                <input type="hidden" name="ie" value="UTF-8" />
+                <input type="hidden" name="oe" value="UTF-8" />
+                <input type="hidden" name="domains" value="" />
+                <input type="hidden" name="sitesearch" value="" />
+                <input type="text" name="q" maxlength="255" value="" />
+                <input type="submit" name="btnG" value="Google Search" />
+            </form>
+        </td>
+    </tr>
+</table>
+
+<div id="PageContent">
+    <div class="pageheader" style="padding: 6px 0px 0px 0px;">
+        <!-- We'll enable this once we figure out how to access (and save) the 
logo resource -->
+        <!--img src="/wiki/images/confluence_logo.gif" style="float: left; 
margin: 4px 4px 4px 10px;" border="0"-->
+        <div style="margin: 0px 10px 0px 10px" class="smalltext">Apache Struts 
2 Documentation</div>
+        <div style="margin: 0px 10px 8px 10px"  class="pagetitle">Freemarker 
Support</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=14206";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/notep_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Edit Page"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=14206";>Edit
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/browse_space.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Browse Space"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW";>Browse 
Space</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=14206";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/add_page_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Add Page"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=14206";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=14206";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Add News"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=14206";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><h1 
id="FreemarkerSupport-FreemarkerSupport">Freemarker Support</h1><p>Freemarker 
views can be rendered using the webwork result type 
<code>freemarker</code>.</p><h3 
id="FreemarkerSupport-Configureyouractiontousethefreemarkerresulttype">Configure
 your action to use the <code>freemarker</code> result type</h3><p>The 
<code>freemarker</code> result type is defined in 
<code>struts-default.xml</code>, so normally you just include it, and define 
your resuts to use <code>type="freemarker"</code>.</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;include file="struts-default.xml"/&gt;
+...
+&lt;action name="test" class="package.Test"&gt;
+  &lt;result name="success" 
type="freemarker"&gt;/WEB-INF/views/testView.ftl&lt;/result&gt;
+&lt;/action&gt;
+...
+</pre>
+</div></div><h3 id="FreemarkerSupport-PropertyResoloution">Property 
Resoloution</h3><p>Your action properties are automatically resolved - just 
like in a velocity view.</p><p><strong>for example</strong> 
<code>${name</code>} will result in <code>stack.findValue("name")</code>, which 
<em>generaly</em> results in <code>action.getName()</code> being 
executed.</p><p>A search process is used to resolve the variable, searching the 
following scopes in order, until a value is found :</p><ul><li>freemarker 
variables</li><li>value stack</li><li>request attributes</li><li>session 
attributes</li><li>servlet context attributes</li></ul><h3 
id="FreemarkerSupport-ObjectsintheContext">Objects in the Context</h3><p>The 
following variables exist in the FreeMarker views</p><ul><li><code>req</code> - 
the current HttpServletRequest</li><li><code>res</code> - the current 
HttpServletResponse</li><li><code>stack</code> - the current 
OgnlValueStack</li><li><code>ognl</code> - the OgnlTool instance<ul><li>Th
 is class contains useful methods to execute OGNL expressions against arbitary 
objects, and a method to generate a select list using the &lt;s:select&gt; 
pattern. (i.e. taking the name of the list property, a listKey and 
listValue)</li></ul></li><li><code>struts</code> - an instance of 
StrutsBeanWrapper</li><li><code>action</code> - the current Struts 
action</li><li><code>exception</code> - <em>optional</em> the Exception 
instance, if the view is a JSP exception or Servlet exception view</li></ul><h3 
id="FreemarkerSupport-FreeMarkerconfigurationwithrecentreleases">FreeMarker 
configuration with recent releases</h3><p>To configure the freemarker engine 
that Struts uses, just add a file <code>freemarker.properties</code> to the 
classpath. The supported properties are those that the Freemarker Configuration 
object expects - see the <a shape="rect" class="external-link" 
href="http://freemarker.org/docs/api/freemarker/template/Configuration.html#setSetting(java.lang.String,%20java.lang.Str
 ing)" rel="nofollow">Freemarker documentation</a> for these.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">default_encoding=ISO-8859-1
+template_update_delay=5
+locale=no_NO
+</pre>
+</div></div><h3 
id="FreemarkerSupport-UsingstrutsUItags-oranyJSPTagLibrary">Using struts UI 
tags - or any JSP Tag Library</h3><p>Freemarker has builtin support for using 
any JSP taglib. You can use JSP taglibs in FreeMarker even if<br clear="none"> 
a) your servlet container has no support for JSP, or <br clear="none"> b) you 
didn't specify the taglib in your web.xml - note how in the example below we 
refer to the taglib by its webapp-absolute URL, so no configuration in web.xml 
is needed.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">&lt;#assign s=JspTaglibs["/WEB-INF/struts.tld"] /&gt;
+
+&lt;@s.form method="'post'" name="'inputform'" action="'save.action'" &gt;
+    &lt;@s.hidden name="'id'" /&gt;
+    &lt;@s.textarea label="'Details'" name="'details'" rows=5 cols=40 /&gt;
+    &lt;@s.submit value="'Save'" align="center" /&gt;
+&lt;/@s.form&gt;
+</pre>
+</div></div><p>NOTE : numeric properties for tags MUST be numbers, not 
strings. as in the rows and cols properties above. if you use cols="40" you 
will receive an exception. Other than that, the freemarker tag container 
behaves as you would expect.</p><h3 
id="FreemarkerSupport-Dynamicattributessupport">Dynamic attributes 
support</h3><p>You can specify dynamic attributes with Struts 2 tags like 
this:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">&lt;@s.textfield name="test" 
dynamicAttributes={"placeholder":"input","foo":"bar"}/&gt;
+</pre>
+</div></div><p>or like this:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">&lt;@s.textfield name="test" placeholder="input" 
foo="bar"/&gt;
+</pre>
+</div></div><p>and for both case, it will be parsed into:</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">&lt;input type="text" name="test" value="" id="test" 
placeholder="input" foo="bar"/&gt;
+</pre>
+</div></div><p>You can also use OGNL expressions with dynamic tags like 
below:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">&lt;@s.textfield name="test" placeholder="input" 
foo="checked: %{bar}"/&gt;
+</pre>
+</div></div><p>When using attributes with hyphens, use the below syntax (you 
can also leave the single quotes from false if you want)</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;@s.form dynamicAttributes={'data-ajax':'false'}&gt;
+  ...
+&lt;/@s.form&gt;</pre>
+</div></div></div>
+        </div>
+
+        
+    </div>
+</div>
+<div class="footer">
+    Generated by CXF SiteExporter
+</div>
+</body>
+</html>

Reply via email to