http://git-wip-us.apache.org/repos/asf/struts-site/blob/124e36c4/content/docs/checkboxlist.html
----------------------------------------------------------------------
diff --git a/content/docs/checkboxlist.html b/content/docs/checkboxlist.html
new file mode 100644
index 0000000..9301f57
--- /dev/null
+++ b/content/docs/checkboxlist.html
@@ -0,0 +1,176 @@
+<!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>checkboxlist</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="checkboxlist.html">checkboxlist</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">checkboxlist</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=13969";>
+                <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=13969";>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=13969";>
+                <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=13969";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=13969";>
+                <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=13969";>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>
+<div class="confluence-information-macro confluence-information-macro-note"><p 
class="title">Important</p><span class="aui-icon aui-icon-small 
aui-iconfont-warning confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
+<p></p><p>
+Note that the listkey and listvalue attribute will default to "key" and "value"
+respectively only when the list attribute is evaluated to a Map or its 
descendant.
+Everything else will result in listkey and listvalue to be null and not used.
+</p></div></div>
+
+<h2 id="checkboxlist-Description">Description</h2>
+
+
+<p>Creates a series of checkboxes from a list. Setup is like &lt;s:select 
/&gt; or &lt;s:radio /&gt;, but creates checkbox tags.</p>
+
+
+<h2 id="checkboxlist-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">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 t
 he html accesskey attribute on rendered html element</td></tr><tr><td 
align="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">css
 ErrorClass</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="to
 p"></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</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">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" valig
 n="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">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">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" 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">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" colspan="1" rowspan="1" valign="top">list</td><td align="left" 
colspan="1" rowspan="1" valign="top"><strong>true</strong></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">Iterable source to populate from. If the list is a Map (key, 
 >value), the Map key will become the option 'value' parameter and the Map 
 >value will become the option body.</td></tr><tr><td align="left" colspan="1" 
 >rowspan="1" valign="top">listCssClass</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">Property of list objects to get css class from</td></tr><tr><td 
 >align="left" colspan="1" rowspan="1" valign="top">listCssStyle</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">Property of list objects to 
get css style from</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">listKey</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">Property of list objects to get field value from</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">listLabelKey</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="to
 p">Property of list objects to be used to lookup for localised version of 
field label</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">listTitle</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">Property of list objects to get title from</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">listValue</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">Property of list objects to get field content 
from</td></tr><tr><td align="left" colspan="1" r
 owspan="1" valign="top">listValueKey</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">Property of list objects to get field value label 
from</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">onblur</td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" va
 lign="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">String</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" rows
 pan="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 at
 tribute 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" 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 onkeypress attribute on rendered html 
element</td></tr><tr><td align="left" colspan="1" rowspan="1" valign="top">onkey
 up</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 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 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" row
 span="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" 
valign="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 attribute on rendered html 
element</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="to
 p">Set the html onselect attribute on rendered html element</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 align="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 on rendered html 
element</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" 
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 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">value</td><td align="left" c
 olspan="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></table></p>
+
+<h2 id="checkboxlist-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:checkboxlist name=&quot;foo&quot; list=&quot;bar&quot;/&gt;
+]]></script>
+</div></div></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/client-side-validation.html
----------------------------------------------------------------------
diff --git a/content/docs/client-side-validation.html 
b/content/docs/client-side-validation.html
new file mode 100644
index 0000000..036c8de
--- /dev/null
+++ b/content/docs/client-side-validation.html
@@ -0,0 +1,179 @@
+<!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>Client Side Validation</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="validation.html">Validation</a>&nbsp;&gt;&nbsp;<a 
href="client-side-validation.html">Client Side Validation</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">Client Side 
Validation</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=14059";>
+                <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=14059";>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=14059";>
+                <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=14059";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=14059";>
+                <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=14059";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><p>The framework adds support for 
client-side validation on top of the standard validation 
framework.</p><p>Client-side validation can be enabled on a per-form basis by 
specifying <code>validate="true"</code> in the <a shape="rect" 
href="form.html">form</a> tag.</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:form name="test" action="javascriptValidation" 
validate="true"&gt;
+  ...
+&lt;/s:form&gt;
+</pre>
+</div></div><p>If a <code>name</code> for the form is not given, the action 
mapping name will be used as the form name. Otherwise, a correct 
<code>action</code> and <code>namespace</code> attributes must be provided to 
the <code>&lt;saf:form&gt;</code> tag.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>Referencing "submitProfile" in the "/user" 
namespace</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">&lt;s:form namespace="/user" action="submitProfile" 
validate="true"&gt;
+  ...
+&lt;/s:form&gt;
+</pre>
+</div></div><p>Technically, the form's action attribute can refer to a "path" 
that includes the namespace and action as a URI. But, client-side validation 
<strong>requires</strong> that the action name and namespeact to be set 
separately.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Won't 
work with client-side validation!</b></div><div class="codeContent panelContent 
pdl">
+<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">&lt;s:form action="/user/submitProfile.action" 
validate="true"&gt;
+  ...
+&lt;/s:form&gt;
+</pre>
+</div></div><p>All the usual <a shape="rect" href="validation.html">validation 
configuration</a> steps apply to client-side validation. Client-side validation 
uses the same validation rules as server-side validation. If server-side 
validation doesn't work, then client-side validation won't work either.</p><div 
class="confluence-information-macro 
confluence-information-macro-information"><p class="title">The left hand 
doesn't know ...</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The <code>required</code> 
attribute on many <a shape="rect" href="struts-tags.html">Struts Tags</a> is 
not integrated with client-side validation! The tag attribute is used by 
certain themes (like xhtml) to put a visual marker (usually '*') next to the 
field. The tag doesn't know if the validation system actually "requires" the 
field or not.</p></div></div><h2 id="ClientSideValidation-ClientSideValidationT
 ypes">Client Side Validation Types</h2><p>There are two styles of client side 
validation.</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" 
href="pure-javascript-client-side-validation.html">Pure JavaScript Client Side 
Validation</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Used 
by the <a shape="rect" href="xhtml-theme.html">xhtml theme</a> and <a 
shape="rect" href="cssxhtml-theme.html">css_xhtml 
theme</a></p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" 
href="ajax-client-side-validation.html">AJAX Client Side 
Validation</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Used 
by the <a shape="rect" href="ajax-theme.html">ajax 
theme</a></p></td></tr></tbody></table></div></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/client-validation.html
----------------------------------------------------------------------
diff --git a/content/docs/client-validation.html 
b/content/docs/client-validation.html
new file mode 100644
index 0000000..74fd170
--- /dev/null
+++ b/content/docs/client-validation.html
@@ -0,0 +1,260 @@
+<!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>Client Validation</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="validation.html">Validation</a>&nbsp;&gt;&nbsp;<a 
href="client-validation.html">Client Validation</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">Client 
Validation</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=13895";>
+                <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=13895";>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=13895";>
+                <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=13895";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=13895";>
+                <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=13895";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><p>Let's create a Client-Side 
validation workflow, step by step.</p><p><img class="emoticon 
emoticon-information" 
src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/information.png";
 data-emoticon-name="information" alt="(info)"> The <code>validate</code> 
attribute is set to <code>true</code>.</p><p><img class="emoticon 
emoticon-information" 
src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/information.png";
 data-emoticon-name="information" alt="(info)"> Some themes do not support 
client-side validation.</p><h2 id="ClientValidation-Step1">Step 1</h2><p>Create 
the form.</p><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;html&gt;
+&lt;head&gt;
+       &lt;title&gt;Struts2 Showcase - Validation - Basic&lt;/title&gt;
+       &lt;s:head/&gt;
+&lt;/head&gt;
+
+&lt;body&gt;
+
+&lt;div class=&quot;page-header&quot;&gt;
+       &lt;h1&gt;Basic validation Example&lt;/h1&gt;
+&lt;/div&gt;
+
+&lt;div class=&quot;container-fluid&quot;&gt;
+       &lt;div class=&quot;row&quot;&gt;
+               &lt;div class=&quot;col-md-12&quot;&gt;
+
+
+                       &lt;s:form method=&quot;post&quot; 
validate=&quot;true&quot;&gt;
+                               &lt;s:textfield label=&quot;Name&quot; 
name=&quot;name&quot;/&gt;
+                               &lt;s:textfield label=&quot;Age&quot; 
name=&quot;age&quot;/&gt;
+                               &lt;s:textfield label=&quot;Favorite 
color&quot; name=&quot;answer&quot;/&gt;
+                               &lt;s:submit cssClass=&quot;btn 
btn-primary&quot;/&gt;
+                       &lt;/s:form&gt;
+               &lt;/div&gt;
+       &lt;/div&gt;
+&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+
+]]></script>
+</div></div><img class="emoticon emoticon-information" 
src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/information.png";
 data-emoticon-name="information" alt="(info)"> This case uses the default 
xhtml theme, so the <code>&lt;s:head &gt;</code> tag is used to link a style 
sheet.<h2 id="ClientValidation-Step2">Step 2</h2><p>Create the Action 
class.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+
+public class QuizAction extends ActionSupport {
+
+       private static final long serialVersionUID = -7505437345373234225L;
+
+       String name;
+       int age;
+       String answer;
+
+       public String getName() {
+               return name;
+       }
+
+       public void setName(String name) {
+               this.name = name;
+       }
+
+       public int getAge() {
+               return age;
+       }
+
+       public void setAge(int age) {
+               this.age = age;
+       }
+
+       public String getAnswer() {
+               return answer;
+       }
+
+       public void setAnswer(String answer) {
+               this.answer = answer;
+       }
+}
+
+]]></script>
+</div></div><h3 id="ClientValidation-Step3">Step 3</h3><p>Create the 
<code>validation.xml</code> to configure the validators to be used.</p><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;!--
+    Add the following DOCTYPE declaration as first line of your 
XXX-validation.xml file:
+    &lt;!DOCTYPE validators PUBLIC &quot;-//Apache Struts//XWork Validator 
1.0.2//EN&quot; 
&quot;http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd&quot;&gt;
+--&gt;
+&lt;validators&gt;
+    &lt;field name=&quot;name&quot;&gt;
+        &lt;field-validator type=&quot;requiredstring&quot;&gt;
+            &lt;message&gt;You must enter a name&lt;/message&gt;
+        &lt;/field-validator&gt;
+    &lt;/field&gt;
+    &lt;field name=&quot;age&quot;&gt;
+        &lt;field-validator type=&quot;int&quot;&gt;
+            &lt;param name=&quot;min&quot;&gt;13&lt;/param&gt;
+            &lt;param name=&quot;max&quot;&gt;19&lt;/param&gt;
+            &lt;message&gt;Only people ages 13 to 19 may take this 
quiz&lt;/message&gt;
+        &lt;/field-validator&gt;
+    &lt;/field&gt;
+&lt;/validators&gt;
+
+]]></script>
+</div></div><h3 id="ClientValidation-ActionandNamespace">Action and 
Namespace</h3><p>A correct action and namespace attributes must be provided to 
the &lt;s:form&gt; tag. For example, if the action named "quizClient" is 
defined in the "/validation" namespace, the form must be configured as:</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 method="post" validate="true" 
action="quizClient" namespace="/validation"&gt;
+   &lt;s:textfield label="Name" name="name"/&gt;
+   &lt;s:textfield label="Age" name="age"/&gt;
+   &lt;s:textfield label="Favorite color" name="answer"/&gt;
+   &lt;s:submit/&gt;
+&lt;/s:form&gt; 
+</pre>
+</div></div><p>While the following will "work" in the sense that the form will 
function correctly, <strong>client-side validation will not</strong>. That is 
because Struts must know the exact namespace and action (rather than a URL) to 
properly support validation.</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 method="post" validate="true" 
action="/validation/quizClient.action"&gt;
+   &lt;s:textfield label="Name" name="name"/&gt;
+   &lt;s:textfield label="Age" name="age"/&gt;
+   &lt;s:textfield label="Favorite color" name="answer"/&gt;
+   &lt;s:submit/&gt;
+&lt;/s:form&gt; 
+</pre>
+</div></div></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/codebehind-plugin.html
----------------------------------------------------------------------
diff --git a/content/docs/codebehind-plugin.html 
b/content/docs/codebehind-plugin.html
new file mode 100644
index 0000000..38fd3ba
--- /dev/null
+++ b/content/docs/codebehind-plugin.html
@@ -0,0 +1,205 @@
+<!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>
+    <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>Codebehind Plugin</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="plugin-developers-guide.html">Plugin Developers 
Guide</a>&nbsp;&gt;&nbsp;<a href="codebehind-plugin.html">Codebehind Plugin</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">Codebehind 
Plugin</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=29637";>
+                <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=29637";>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=29637";>
+                <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=29637";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=29637";>
+                <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=29637";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><div 
class="confluence-information-macro confluence-information-macro-warning"><p 
class="title">Deprecated Plugin</p><span class="aui-icon aui-icon-small 
aui-iconfont-error confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
+<p>Since 2.1 this plugin has been deprecated in favor of the <a shape="rect" 
href="convention-plugin.html">Convention Plugin</a>. See <a shape="rect" 
href="converting-application-from-codebehind-to-convention-plugin.html">this 
page</a> for details on how to port your application to the Convention 
plugin.</p></div></div>
+
+<p>The Codebehind Plugin reduces mundane configuration by adding "Page 
Controller" conventions. </p>
+
+<p>There are two common situations where the plugin applies convention over 
configuration:</p>
+
+<ol><li><strong>Default mappings</strong> - (or "pages with no mappings") 
These are cases where the page is mostly static and doesn't require an Action 
class to execute logic.  Common examples are index pages and those that heavily 
use JSP tags or JSF components.</li><li><strong>Default results</strong> - The 
purpose of most Actions is to execute code to prepare the data for a specific 
page. The name of this page is often the same as the Action itself.</li></ol>
+
+
+<p>To improve the first case, the plugin will detect the presence of a page 
with no corresponding Struts mapping and automatically substitute a mapping 
that uses the default Action class for the package, which is usually 
ActionSupport, a NO-OP Action.  </p>
+
+<p>For the problem of default results, the plugin will make it unnecessary to 
define those results by detecting the presence of a page for that Action and 
creating the appropriate configuration on-the-fly. </p>
+
+<p>In these two ways, the plugin encourages a page-based development style, 
handling the linking of Struts actions with pages and pages with Results in a 
common way.</p>
+
+<p><img class="emoticon emoticon-tick" 
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png";
 data-emoticon-name="tick" alt="(tick)"> To see the plugin in action, review 
the "Person Manager" example in the Showcase application.</p>
+
+<h2 id="CodebehindPlugin-Features">Features</h2>
+
+<ul><li>Provides default mappings for pages that don't have 
Actions</li><li>Provides default results by auto-discovering pages</li></ul>
+
+
+<h2 id="CodebehindPlugin-Usage">Usage</h2>
+
+<p>To use this plugin, simply copy its jar into your application.  The plugin 
can be used to find default mappings and results.</p>
+
+<h3 id="CodebehindPlugin-DefaultMappings">Default Mappings</h3>
+
+<p>To better facilitate a code-behind development approach, the plugin will 
detect the case where the request has no defined Struts action mapping, yet 
there exists a corresponding page.  It will then create a dummy action mapping 
referencing the default Action class (usually ActionSupport), allowing the page 
to be displayed normally.  Additionally, the default interceptor stack for the 
configured package will be applied, bringing the workflow benefits of 
interceptor stacks to simple pages.</p>
+
+<p>When no explicitly configured Action can be found for a request, the plugin 
searches the web application for a likely page. Specifically, the following 
pattern is used to locate a page:</p>
+
+<p><code>/NAMESPACE/ACTION.(jsp|vm|ftl)</code></p>
+
+<p>For example, if the request is for <code><a shape="rect" 
class="external-link" href="http://www.company.com/myapp/member/login.action"; 
rel="nofollow">http://www.company.com/myapp/member/login.action</a></code>, the 
plugin will look for the following pages, in this order: </p>
+
+<ol><li><code>/member/login.jsp</code></li><li><code>/member/login.vm</code></li><li><code>/member/login.ftl</code></li></ol>
+
+
+<p>If any of those pages are found, the plugin will construct an ActionConfig 
object on the fly, using the ActionSupport class for the Action and a single 
Result that points to the discovered page.  The ActionConfig will be put in the 
configured package, meaning that it will inherit the default Interceptor stack 
for that package.  The default package is <code>codebehind-default</code>, 
however, it can be configured in any <a shape="rect" 
href="constant-configuration.html">configuration file</a> via the 
<code>struts.codebehind.defaultPackage</code> constant.</p>
+
+<h3 id="CodebehindPlugin-DefaultResults">Default Results</h3>
+
+<p>In many applications, a majority of Results could have the same root name 
as the action mapping.  To reduce this unnecessary configuration, the Struts 
plugin will try to guess the appropriate Result, if none is explicitly 
configured.  This technique works for any result code, including 
<code>success</code>. When combined with the <a shape="rect" 
href="zero-configuration.html">Zero Configuration</a> style, the amount of 
configuration in an application dwindles to next to nothing.</p>
+
+<p>When no explicitly configured Result is found for an Action's result code, 
the plugin, again, searches the web application for a matching page. 
Specifically, the following patterns, in the following order, are used to 
locate a page:</p>
+
+<ol><li><code>/NAMESPACE/ACTION-RESULT_CODE.(jsp|vm|ftl)</code></li><li><code>/NAMESPACE/ACTION.(jsp|vm|ftl)</code></li></ol>
+
+
+<p>These two patterns are searched for each of the three default page 
extensions: jsp, vm, and ftl.  For example, if the request is for <code><a 
shape="rect" class="external-link" 
href="http://www.company.com/myapp/member/login.action"; 
rel="nofollow">http://www.company.com/myapp/member/login.action</a></code>, so 
that the action name is <code>login</code> and the namespace is 
<code>member</code>, and the Action class returned a code of 
<code>success</code>, the plugin will look for the following pages, in this 
order: </p>
+
+<ol><li><code>/member/login-success.jsp</code></li><li><code>/member/login.jsp</code></li><li><code>/member/login-success.vm</code></li><li><code>/member/login.vm</code></li><li><code>/member/login-success.ftl</code></li><li><code>/member/login.ftl</code></li></ol>
+
+
+<p>If any of those pages are found, the appropriate Result will be constructed 
and processed.</p>
+
+<h3 id="CodebehindPlugin-Settings">Settings</h3>
+
+<p>The following settings can be customized.  See the <a shape="rect" 
class="external-link" 
href="http://cwiki.apache.org/confluence/display/WW/Configuration+Files";>developer
 guide</a>.</p>
+
+<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Setting</p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Possible Values</p></th></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>struts.codebehind.defaultPackage</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>The default package to use for 
created Action mappings</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>codebehind-default</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Any existing package 
name</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>struts.configuration.classpath.disableActionScanning</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>Whether to disable scanning 
the classpath for Action
  classes or not</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>true</code> or 
<code>false</code></p></td></tr></tbody></table></div>
+
+
+<h3 id="CodebehindPlugin-Installation">Installation</h3>
+
+<p>This plugin can be installed by copying the plugin jar into your 
application's <code>/WEB-INF/lib</code> directory.  No other files need to be 
copied or created.</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/coding-actions.html
----------------------------------------------------------------------
diff --git a/content/docs/coding-actions.html b/content/docs/coding-actions.html
new file mode 100644
index 0000000..cdb5206
--- /dev/null
+++ b/content/docs/coding-actions.html
@@ -0,0 +1,216 @@
+<!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>Coding Actions</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="tutorials.html">Tutorials</a>&nbsp;&gt;&nbsp;<a 
href="bootstrap.html">Bootstrap</a>&nbsp;&gt;&nbsp;<a 
href="coding-actions.html">Coding Actions</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">Coding 
Actions</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=13986";>
+                <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=13986";>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=13986";>
+                <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=13986";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=13986";>
+                <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=13986";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><p>In the <a shape="rect" 
href="using-tags.html">Using Tags</a> lesson, we implemented a Logon form. In 
the <em>Coding Actions</em> lesson, we interpret the Logon form, and return a 
different result code depending on the circumstances. </p>
+
+<p>If you have coded along, you can open the Logon action</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;">http://localhost:8080/tutorial/Logon.action</pre>
+</div></div>
+
+<p>and enter a likely username and password. Since we haven't given the Action 
any behavior, the mapping redisplays the default <code>Logon.jsp</code> page. 
</p>
+
+<p>Let's add an Action class that will make the Logon form more interesting. 
</p>
+
+<h2 id="CodingActions-TheCode">The Code </h2>
+
+<p>Just as an example, we can examine the username and password values. If 
either or both properties are empty, return INPUT, so that we can collect a 
valid Logon. Otherwise, return SUCCESS. </p>
+
+<div class="code panel pdl" style="border-style: solid;border-width: 
1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;border-bottom-style: solid;"><b>Logon.java</b></div><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+package tutorial;
+import com.opensymphony.xwork2.ActionSupport;
+public class Logon extends ActionSupport {
+
+    public String execute() throws Exception {
+        if (isInvalid(getUsername())) return INPUT;
+        if (isInvalid(getPassword())) return INPUT;
+        return SUCCESS;
+    }
+
+    private boolean isInvalid(String value) {
+        return (value == null || value.length() == 0);
+    }
+
+    private String username;
+    public String getUsername() {
+        return username;
+    }
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    private String password;
+    public String getPassword() {
+        return password;
+    }
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+}
+</pre>
+</div></div>
+
+<h2 id="CodingActions-HowTheCodeWorks">How The Code Works</h2>
+
+<p>The framework automatically populates the username and password properties 
for us. All that's left to do is checking to see if either property is empty. 
</p>
+
+<h2 id="CodingActions-WhattoRemember">What to Remember</h2>
+
+<p>The Actions do the "heavy lifting" in a web application. Actions interact 
with data base systems and business rule engines, so that we can turn 
"billboard" HTML into a rich, dynamic web experience. </p>
+
+<p>After doing its work, an Action returns a result code to indicate what the 
framework should do next. Often, the next step is to go onto the "success" 
result. Other times, we might need to go to an "error" result instead. In 
either case, the Action does not worry about generating the response, only 
deciding which logical result to present next.</p>
+
+<p><img class="emoticon emoticon-light-on" 
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/lightbulb_on.png";
 data-emoticon-name="light-on" alt="(lightbulb)"> For more about Actions, see 
<a shape="rect" href="big-picture.html">Big Picture</a> in the Core Developers 
Guide.</p>
+
+<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p> Next </p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p> Onward to <a shape="rect" 
href="selecting-results.html">Selecting Results</a> </p></td></tr><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p> Prev </p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p> Return to <a shape="rect" 
href="using-tags.html">Using Tags</a> </p></td></tr></tbody></table></div></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/coding-struts-2-actions.data/hellobruce.png
----------------------------------------------------------------------
diff --git a/content/docs/coding-struts-2-actions.data/hellobruce.png 
b/content/docs/coding-struts-2-actions.data/hellobruce.png
new file mode 100644
index 0000000..835e1a8
Binary files /dev/null and 
b/content/docs/coding-struts-2-actions.data/hellobruce.png differ

http://git-wip-us.apache.org/repos/asf/struts-site/blob/124e36c4/content/docs/coding-struts-2-actions.data/personalhello.png
----------------------------------------------------------------------
diff --git a/content/docs/coding-struts-2-actions.data/personalhello.png 
b/content/docs/coding-struts-2-actions.data/personalhello.png
new file mode 100644
index 0000000..6045372
Binary files /dev/null and 
b/content/docs/coding-struts-2-actions.data/personalhello.png differ

Reply via email to