Modified: websites/production/struts/content/docs/tree.html
==============================================================================
--- websites/production/struts/content/docs/tree.html (original)
+++ websites/production/struts/content/docs/tree.html Sun Apr 23 18:10:14 2017
@@ -148,18 +148,18 @@ under the License.
 <p>For more examples see <a shape="rect" 
href="ajax-and-javascript-recipes.html">Ajax and JavaScript 
Recipes</a></p></div></div>
 
 <h2 id="tree-Description">Description</h2>
-An error occurred: Unable to retrieve the URL: 
https://git-wip-us.apache.org/repos/asf?p=struts.git;a=blob_plain;hb=HEAD;f=plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Tree.java
 status code: 404. The error has been recorded.
+<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
 
 <h2 id="tree-Parameters">Parameters</h2>
 <p><table width="100%"><tr><td colspan="6" rowspan="1"><h4>Dynamic Attributes 
Allowed:</h4> false</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 
 the html accesskey attribute on rendered html element</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">blankIconSrc</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">Blank icon image source.</td></tr><tr><td align="left" colspan="1" 
rowspan="1" valign="top">childCollectionProperty</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 childCollectionProperty property.</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">collapsedNotifyTopics<
 /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">Comma separated lis of topics to be published when a node is 
collapsed. An object with a 'node' property will be passed as parameter to the 
topics.</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" rowspa
 n="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" v
 align="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 to use for element</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">errorNotifyTopics</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">Comma delimmited list of topics that will published after the 
request(if the request fails).Only valid if 'href' is set</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">expandIconSrcMinus</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">Expand icon <img align="
 middle" class="emoticon" src="null/icons/emoticons/forbidden.png" height="16" 
width="16" alt="" border="0"> image source.</td></tr><tr><td align="left" 
colspan="1" rowspan="1" valign="top">expandIconSrcPlus</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">Expand Icon <img align="middle" class="emoticon" 
src="null/icons/emoticons/add.png" height="16" width="16" alt="" border="0"> 
image source.</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">expandedNotifyTopics</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">Comma separated lis 
of topics to be published when a node is expanded. An object with a 'node' 
property will be passed as parameter to the topics.</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">gridIconSrcC</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">Image source for under child item child icons.</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">gridIconSrcL</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" co
 lspan="1" rowspan="1" valign="top"> Image source for last child 
grid.</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">gridIconSrcP</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">Image source for under parent item child icons.</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">gridIconSrcV</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">Image source for vertical line.</td></tr><tr><td align="left" 
colspan="1" rowspan="1" valign="top">
 gridIconSrcX</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">Image source for grid for sole root item.</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">gridIconSrcY</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">Image source for grid for last root item.</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">href</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">Url used to load the list of children 
nodes for an specific node, whose id will be passed as a parameter named 
'nodeId' (empty for root)</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">iconHeight</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">18px</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 height</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">iconWidth</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">19px</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">Icon width</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">The id to use for the element</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" val
 ign="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">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">nodeIdProperty</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 nodeIdProperty property.</td></tr><tr><td align="left" 
 >colspan="1" rowspan="1" valign="top">nodeTitleProperty</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 nodeTitleProperty p
 roperty.</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">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" 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="l
 eft" 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" 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">St
 ring</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 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 rendere
 d 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" 
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" vali
 gn="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">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">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">rootNode</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 rootNode property.</td></tr><tr><td align="left" 
colspan="1" rowspan="1" valign="top">selectedNotifyTopics</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">Comma separated lis of topics to be published when a node is 
selected. An object with a 'node' property will be passed as parameter to the 
topics.</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">showGrid</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">Show grid</td></tr><tr>
 <td align="left" colspan="1" rowspan="1" valign="top">showRootGrid</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 showRootGrid property (default true).</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" ro
 wspan="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">templateCssPath</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">{contex
 tPath}/struts/tree.css.</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">Template css path</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">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">toggle</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">fade</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 toggle property (either 'explode' or 'fade')</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">toggleDuration</td><td 
align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" 
colspan="1" rowspan="1" valign="top">150</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">Toggle duration in milliseconds</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 ali
 gn="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">treeCollapsedTopics</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 'collapsedNotifyTopics' instead.</td></tr><tr><td 
align="left" colspan="1" rowspan="1" valign="top">treeExpandedTopics</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 'expandedNotifyTopics' 
instead.</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">treeSelectedTopic</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 'selectedNotifyTopics' instead.</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></table></p>
 
 <h2 id="tree-Examples">Examples</h2>
 <p>Static tree:</p>
-An error occurred: Unable to retrieve the URL: 
https://git-wip-us.apache.org/repos/asf?p=struts.git;a=blob_plain;hb=HEAD;f=plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Tree.java
 status code: 404. The error has been recorded.
+<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
 <p>Dynamic tree (rendered on the server):</p>
-An error occurred: Unable to retrieve the URL: 
https://git-wip-us.apache.org/repos/asf?p=struts.git;a=blob_plain;hb=HEAD;f=plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Tree.java
 status code: 404. The error has been recorded.
+<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
 <p>Dynamic tree loaded with AJAX (one request is made for each node):</p>
-An error occurred: Unable to retrieve the URL: 
https://git-wip-us.apache.org/repos/asf?p=struts.git;a=blob_plain;hb=HEAD;f=plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Tree.java
 status code: 404. The error has been recorded.</div>
+<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/type-conversion.html
==============================================================================
--- websites/production/struts/content/docs/type-conversion.html (original)
+++ websites/production/struts/content/docs/type-conversion.html Sun Apr 23 
18:10:14 2017
@@ -142,11 +142,11 @@ under the License.
             <div id="ConfluenceContent"><p>Routine type conversion in the 
framework is transparent. Generally, all you need to do is ensure that HTML 
inputs have names that can be used in <a shape="rect" href="ognl.html">OGNL</a> 
expressions. (HTML inputs are form elements and other GET/POST parameters.)</p>
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1488973713374 {padding: 0px;}
-div.rbtoc1488973713374 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1488973713374 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1492970056994 {padding: 0px;}
+div.rbtoc1492970056994 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1492970056994 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1488973713374">
+/*]]>*/</style><div class="toc-macro rbtoc1492970056994">
 <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" href="#TypeConversion-BuiltinTypeConversionSupport">Built in Type 
Conversion Support</a></li><li><span class="TOCOutline">2</span> <a 
shape="rect" href="#TypeConversion-RelationshiptoParameterNames">Relationship 
to Parameter Names</a></li><li><span class="TOCOutline">3</span> <a 
shape="rect" href="#TypeConversion-CreatingaTypeConverter">Creating a Type 
Converter</a></li><li><span class="TOCOutline">4</span> <a shape="rect" 
href="#TypeConversion-ApplyingaTypeConvertertoanAction">Applying a Type 
Converter to an Action</a></li><li><span class="TOCOutline">5</span> <a 
shape="rect" 
href="#TypeConversion-ApplyingaTypeConvertertoabeanormodel">Applying a Type 
Converter to a bean or model</a></li><li><span class="TOCOutline">6</span> <a 
shape="rect" 
href="#TypeConversion-ApplyingaTypeConverterforanapplication">Applying a Type 
Converter for an application</a></li><li><span class="TOCOutline">7</span> <a 
shape="r
 ect" href="#TypeConversion-ASimpleExample">A Simple Example</a></li><li><span 
class="TOCOutline">8</span> <a shape="rect" 
href="#TypeConversion-AdvancedTypeConversion">Advanced Type Conversion</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">8.1</span> <a 
shape="rect" href="#TypeConversion-NullPropertyHandling">Null Property 
Handling</a></li><li><span class="TOCOutline">8.2</span> <a shape="rect" 
href="#TypeConversion-CollectionandMapSupport">Collection and Map Support</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">8.2.1</span> <a 
shape="rect" 
href="#TypeConversion-Indexingacollectionbyapropertyofthatcollection">Indexing 
a collection by a property of that collection</a></li></ul>

Modified: websites/production/struts/content/docs/typeconversion-annotation.html
==============================================================================
--- websites/production/struts/content/docs/typeconversion-annotation.html 
(original)
+++ websites/production/struts/content/docs/typeconversion-annotation.html Sun 
Apr 23 18:10:14 2017
@@ -160,7 +160,7 @@ Set type to: <code>type = ConversionType
 
 <h2 id="TypeConversionAnnotation-Parameters">Parameters</h2>
 
-<p><table summary=""><thead><tr><th colspan="1" rowspan="1">Parameter</th><th 
colspan="1" rowspan="1">Required</th><th colspan="1" 
rowspan="1">Default</th><th colspan="1" 
rowspan="1">Description</th></tr></thead><tbody><tr><td colspan="1" 
rowspan="1">key</td><td colspan="1" rowspan="1">no</td><td colspan="1" 
rowspan="1">The annotated property/key name</td><td colspan="1" rowspan="1">The 
optional property name mostly used within TYPE level 
annotations.</td></tr><tr><td colspan="1" rowspan="1">type</td><td colspan="1" 
rowspan="1">no</td><td colspan="1" rowspan="1">ConversionType.CLASS</td><td 
colspan="1" rowspan="1">Enum value of ConversionType.  Determines whether the 
conversion should be applied at application or class level.</td></tr><tr><td 
colspan="1" rowspan="1">rule</td><td colspan="1" rowspan="1">no</td><td 
colspan="1" rowspan="1">ConversionRule.PROPERTY</td><td colspan="1" 
rowspan="1">Enum value of ConversionRule. The ConversionRule can be a property, 
a Collection or a Map.</
 td></tr><tr><td colspan="1" rowspan="1">converter</td><td colspan="1" 
rowspan="1">either this or value</td><td colspan="1" rowspan="1">&#160;</td><td 
colspan="1" rowspan="1">The class name of the TypeConverter to be used as 
converter.</td></tr><tr><td colspan="1" rowspan="1">value</td><td colspan="1" 
rowspan="1">either converter or this</td><td colspan="1" 
rowspan="1">&#160;</td><td colspan="1" rowspan="1">The value to set for 
ConversionRule.KEY_PROPERTY.</td></tr></tbody></table></p>
+<p><table summary=""><thead><tr><th colspan="1" rowspan="1">Parameter</th><th 
colspan="1" rowspan="1">Required</th><th colspan="1" 
rowspan="1">Default</th><th colspan="1" 
rowspan="1">Description</th></tr></thead><tbody><tr><td colspan="1" 
rowspan="1">key</td><td colspan="1" rowspan="1">no</td><td colspan="1" 
rowspan="1">The annotated property/key name</td><td colspan="1" rowspan="1">The 
optional property name mostly used within TYPE level 
annotations.</td></tr><tr><td colspan="1" rowspan="1">type</td><td colspan="1" 
rowspan="1">no</td><td colspan="1" rowspan="1">ConversionType.CLASS</td><td 
colspan="1" rowspan="1">Enum value of ConversionType.  Determines whether the 
conversion should be applied at application or class level.</td></tr><tr><td 
colspan="1" rowspan="1">rule</td><td colspan="1" rowspan="1">no</td><td 
colspan="1" rowspan="1">ConversionRule.PROPERTY</td><td colspan="1" 
rowspan="1">Enum value of ConversionRule. The ConversionRule can be a property, 
a Collection or a Map.</
 td></tr><tr><td colspan="1" rowspan="1">converter</td><td colspan="1" 
rowspan="1">DEPRECATED: either this or value</td><td colspan="1" 
rowspan="1">&#160;</td><td colspan="1" rowspan="1">The class name of the 
TypeConverter to be used as converter.</td></tr><tr><td colspan="1" 
rowspan="1">converterClass</td><td colspan="1" rowspan="1">either this or 
value</td><td colspan="1" rowspan="1">&#160;</td><td colspan="1" 
rowspan="1">The class of the TypeConverter to be used as converter. 
XWorkBasicConverter by default.</td></tr><tr><td colspan="1" 
rowspan="1">value</td><td colspan="1" rowspan="1">either converter or 
this</td><td colspan="1" rowspan="1">&#160;</td><td colspan="1" rowspan="1">The 
value to set for ConversionRule.KEY_PROPERTY.</td></tr></tbody></table></p>
 
 
 <h2 id="TypeConversionAnnotation-Examples">Examples</h2>
@@ -177,27 +177,27 @@ public class ConversionAction implements
 
   private HashMap keyValues = null;
 
-  @TypeConversion(type = ConversionType.APPLICATION, converter = 
&quot;com.opensymphony.xwork2.util.XWorkBasicConverter&quot;)
+  @TypeConversion(type = ConversionType.APPLICATION)
   public void setConvertInt( String convertInt ) {
       this.convertInt = convertInt;
   }
 
-  @TypeConversion(converter = 
&quot;com.opensymphony.xwork2.util.XWorkBasicConverter&quot;)
+  @TypeConversion(converterClass = XWorkBasicConverter.class)
   public void setConvertDouble( String convertDouble ) {
       this.convertDouble = convertDouble;
   }
 
-  @TypeConversion(rule = ConversionRule.COLLECTION, converter = 
&quot;java.util.String&quot;)
+  @TypeConversion(rule = ConversionRule.COLLECTION, converterClass = 
String.class)
   public void setUsers( List users ) {
       this.users = users;
   }
 
-  @TypeConversion(rule = ConversionRule.MAP, converter = 
&quot;java.math.BigInteger&quot;)
+  @TypeConversion(rule = ConversionRule.MAP, converterClass = BigInteger.class)
   public void setKeyValues( HashMap keyValues ) {
       this.keyValues = keyValues;
   }
 
-  @TypeConversion(type = ConversionType.APPLICATION, property = 
&quot;java.util.Date&quot;, converter = 
&quot;com.opensymphony.xwork2.util.XWorkBasicConverter&quot;)
+  @TypeConversion(type = ConversionType.APPLICATION, property = 
&quot;java.util.Date&quot;, converterClass = XWorkBasicConverter.class)
   public String execute() throws Exception {
       return SUCCESS;
   }

Modified: websites/production/struts/content/docs/validation.html
==============================================================================
--- websites/production/struts/content/docs/validation.html (original)
+++ websites/production/struts/content/docs/validation.html Sun Apr 23 18:10:14 
2017
@@ -140,11 +140,11 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><p>Struts 2 validation is configured 
via XML or annotations. Manual validation in the action is also possible, and 
may be combined with XML and annotation-driven validation.</p><p>Validation 
also depends on both the <code>validation</code> and <code>workflow</code> 
interceptors (both are included in the default interceptor stack). The 
<code>validation</code> interceptor does the validation itself and creates a 
list of field-specific errors. The <code>workflow</code> interceptor checks for 
the presence of validation errors: if any are found, it returns the "input" 
result (by default), taking the user back to the form which contained the 
validation errors.</p><p>If we're using the default settings <em>and</em> our 
action doesn't have an "input" result defined <em>and</em> there are validation 
(or, incidentally, type conversion) errors, we'll get an error message back 
telling us there's no "input" result defined for the action.</p><p><strong>CONT
 ENTS</strong></p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1488973922968 {padding: 0px;}
-div.rbtoc1488973922968 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1488973922968 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1492970220404 {padding: 0px;}
+div.rbtoc1492970220404 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1492970220404 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1488973922968">
+/*]]>*/</style></p><div class="toc-macro rbtoc1492970220404">
 <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" href="#Validation-UsingAnnotations">Using 
Annotations</a></li><li><span class="TOCOutline">2</span> <a shape="rect" 
href="#Validation-BeanValidation">Bean Validation</a></li><li><span 
class="TOCOutline">3</span> <a shape="rect" 
href="#Validation-Examples">Examples</a></li><li><span 
class="TOCOutline">4</span> <a shape="rect" 
href="#Validation-BundledValidators">Bundled Validators</a></li><li><span 
class="TOCOutline">5</span> <a shape="rect" 
href="#Validation-RegisteringValidators">Registering 
Validators</a></li><li><span class="TOCOutline">6</span> <a shape="rect" 
href="#Validation-TurningonValidation">Turning on Validation</a></li><li><span 
class="TOCOutline">7</span> <a shape="rect" 
href="#Validation-ValidatorScopes">Validator Scopes</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">7.1</span> <a 
shape="rect" href="#Validation-Notes">Notes</a></li></ul>
 </li><li><span class="TOCOutline">8</span> <a shape="rect" 
href="#Validation-DefiningValidationRules">Defining Validation 
Rules</a></li><li><span class="TOCOutline">9</span> <a shape="rect" 
href="#Validation-LocalizingandParameterizingMessages">Localizing and 
Parameterizing Messages</a></li><li><span class="TOCOutline">10</span> <a 
shape="rect" href="#Validation-ValidatorFlavor">Validator 
Flavor</a></li><li><span class="TOCOutline">11</span> <a shape="rect" 
href="#Validation-Non-FieldValidatorVsField-Validatorvalidatortypes">Non-Field 
Validator Vs Field-Validator</a></li><li><span class="TOCOutline">12</span> <a 
shape="rect" href="#Validation-Short-CircuitingValidator">Short-Circuiting 
Validator</a></li><li><span class="TOCOutline">13</span> <a shape="rect" 
href="#Validation-HowValidatorsofanActionareFound">How Validators of an Action 
are Found</a></li><li><span class="TOCOutline">14</span> <a shape="rect" 
href="#Validation-Writingcustomvalidators">Writing custom validators</a></li>
 <li><span class="TOCOutline">15</span> <a shape="rect" 
href="#Validation-Resources">Resources</a></li><li><span 
class="TOCOutline">16</span> <a shape="rect" href="#Validation-Next:">Next: 
Localization</a></li></ul>

Modified: websites/production/struts/content/docs/velocity-result.html
==============================================================================
--- websites/production/struts/content/docs/velocity-result.html (original)
+++ websites/production/struts/content/docs/velocity-result.html Sun Apr 23 
18:10:14 2017
@@ -140,7 +140,7 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent">
-An error occurred: Unable to retrieve the URL: 
https://git-wip-us.apache.org/repos/asf?p=struts.git;a=blob_plain;hb=HEAD;f=core/src/main/java/org/apache/struts2/dispatcher/VelocityResult.java
 status code: 404. The error has been recorded.
+<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
 
 <h1 id="VelocityResult-Parameters">Parameters</h1>
 

Added: 
websites/production/struts/content/getting-started/attachments/using_tags_form.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/production/struts/content/getting-started/attachments/using_tags_form.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
websites/production/struts/content/getting-started/attachments/using_tags_hello.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/production/struts/content/getting-started/attachments/using_tags_hello.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: websites/production/struts/content/getting-started/using-tags.html
==============================================================================
--- websites/production/struts/content/getting-started/using-tags.html 
(original)
+++ websites/production/struts/content/getting-started/using-tags.html Sun Apr 
23 18:10:14 2017
@@ -126,29 +126,29 @@
 
 <p>This tutorial assumes you’ve completed the <a 
href="hello-world-using-struts2.html">Hello World</a> tutorial and have a 
working helloworld project. The example code for this tutorial, using_tags, is 
available for checkout from the Struts 2 GitHub repository at <a 
href="https://github.com/apache/struts-examples";>https://github.com/apache/struts-examples</a>.
 The example projects use Maven to manage the artifact dependencies and to 
build the .war files.</p>
 
-<p>In the <a href="hello-world-using-struts2.html">Hello World</a> lesson, we 
added to the index.jsp a Struts 2 url tag to create a hyperlink to the 
hello.action. This tutorial will explore the url and other Struts 2 tags 
further.</p>
+<p>In the <a href="hello-world-using-struts2.html">Hello World</a> lesson, we 
added a Struts 2 url tag to the <code 
class="highlighter-rouge">index.jsp</code> to create a hyperlink to the <code 
class="highlighter-rouge">hello.action</code>. This tutorial will explore the 
url and other Struts 2 tags further.</p>
 
 <p>Web applications differ from conventional websites in that web applications 
can create a dynamic response. To make it easier to reference dynamic data from 
a page, the Struts 2 framework offers a set of tags. Some of the tags mimic 
standard HTML tag while providing added value. Other tags create non-standard, 
but useful controls.</p>
 
 <p>To use the Struts 2 tags on the view page, you must include a tag library 
directive. Typically, the taglib directive is <code 
class="highlighter-rouge">&lt;%@ taglib prefix="s" uri="/struts-tags" 
%\&gt;</code>. So the prefix for all the Struts 2 tags will be “s”. 
-If you want to actually read the Struts 2 tag TLD file, you’ll find it in 
the META-INF folder of the Struts 2 core jar.</p>
+If you want to actually read the Struts 2 tag TLD file, you’ll find it in 
the `META-INF folder of the Struts 2 core jar.</p>
 
-<p><strong>Struts 2 url Tag</strong></p>
+<h3 id="struts-2-url-tag">Struts 2 url Tag</h3>
 
 <p>One use of the Struts 2 Tags is to create links to other web resources, 
especially to other resources in the local application.</p>
 
 <p>While HTML provides a simple a tag for creating hyperlinks, the HTML tag 
often requires us to include redundant information. Also the HTML tag cannot 
easily access dynamic data provided by the framework.</p>
 
-<p>A very common use case in web applications is linking to other pages. In 
the <a href="hello-world-using-struts2.html">Hello World</a> tutorial we added 
to index.jsp a link to the hello.action using the Struts 2 url tag. Please 
refer to the <em>url documentation</em>  for more information about the url 
tag.</p>
+<p>A very common use case in web applications is linking to other pages. In 
the <a href="hello-world-using-struts2.html">Hello World</a> tutorial we added 
a link to <code class="highlighter-rouge">hello.action</code> inside the <code 
class="highlighter-rouge">index.jsp</code> using the Struts 2 url tag. Please 
refer to the <a href="https://struts.apache.org/docs/url.html";>url 
documentation</a> for more information about the url tag.</p>
 
 <p><strong>index.jsp</strong></p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="err">&lt;</span>%@ page language="java" contentType="text/html; 
charset=ISO-8859-1" pageEncoding="ISO-8859-1"%&gt;
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="cp">&lt;!DOCTYPE html&gt;</span>
+<span class="err">&lt;</span>%@ page language="java" contentType="text/html; 
charset=UTF-8" pageEncoding="UTF-8" %&gt;
 <span class="err">&lt;</span>%@ taglib prefix="s" uri="/struts-tags" %&gt;
-<span class="cp">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;</span>
 <span class="nt">&lt;html&gt;</span>
   <span class="nt">&lt;head&gt;</span>
-    <span class="nt">&lt;meta</span> <span class="na">http-equiv=</span><span 
class="s">"Content-Type"</span> <span class="na">content=</span><span 
class="s">"text/html; charset=ISO-8859-1"</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;meta</span> <span class="na">http-equiv=</span><span 
class="s">"Content-Type"</span> <span class="na">content=</span><span 
class="s">"text/html; charset=UTF-8"</span><span class="nt">&gt;</span>
     <span class="nt">&lt;title&gt;</span>Basic Struts 2 Application - 
Welcome<span class="nt">&lt;/title&gt;</span>
   <span class="nt">&lt;/head&gt;</span>
   <span class="nt">&lt;body&gt;</span>
@@ -159,93 +159,86 @@ If you want to actually read the Struts
 </code></pre>
 </div>
 
-<p>When you run the Hello World tutorial in your Servlet container and then 
mouse over the Hello World hyperlink created by the Struts 2 url tag you’ll 
see that the URL created is hello.action (relative to the web context’s root 
folder).</p>
+<p>When you run the Hello World tutorial in your Servlet container and then 
mouse over the Hello World hyperlink created by the Struts 2 url tag you’ll 
see that the URL created is <code class="highlighter-rouge">hello.action</code> 
(relative to the web context’s root folder).</p>
 
-<p>Examine the struts.xml configuration in the Hello World tutorial and you 
will find this:</p>
+<p>Examine the <code class="highlighter-rouge">struts.xml</code> configuration 
in the Hello World tutorial and you will find this:</p>
 
 <p><strong>struts.xml</strong></p>
 
 <div class="highlighter-rouge"><pre class="highlight"><code>...
 <span class="nt">&lt;action</span> <span class="na">name=</span><span 
class="s">"hello"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts.helloworld.action.HelloWorldAction"</span> <span 
class="na">method=</span><span class="s">"execute"</span><span 
class="nt">&gt;</span>
-  <span class="nt">&lt;result</span> <span class="na">name=</span><span 
class="s">"success"</span><span class="nt">&gt;</span>/HelloWorld.jsp<span 
class="nt">&lt;/result&gt;</span>
+    <span class="nt">&lt;result</span> <span class="na">name=</span><span 
class="s">"success"</span><span class="nt">&gt;</span>/HelloWorld.jsp<span 
class="nt">&lt;/result&gt;</span>
 <span class="nt">&lt;/action&gt;</span>
 ...
 </code></pre>
 </div>
 
-<p>The action node above maps the hello.action to the execute method of class 
HelloWorldAction. If the execute method returns success, the view page 
HelloWorld.jsp (in web context root folder) will be returned to the user.</p>
+<p>The action node above maps the <code 
class="highlighter-rouge">hello.action</code> to the execute method of class 
<code class="highlighter-rouge">HelloWorldAction</code>. If the execute method 
returns <code class="highlighter-rouge">success</code>, the view page <code 
class="highlighter-rouge">HelloWorld.jsp</code> (in web context root folder) 
will be returned to the user.</p>
 
 <p>A common use case is that the URL also needs to include a value for a query 
string parameter such as userName. To add a query string parameter and its 
value use the Struts 2 param tag, nested inside the url tag.</p>
 
-<p>For the Using Tags tutorial add the following to index.jsp just after the 
link for Hello World.</p>
+<p>For the Using Tags tutorial add the following to <code 
class="highlighter-rouge">index.jsp</code> just after the link for Hello 
World.</p>
 
 <p><strong>url tag with param</strong></p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;s:url</span> <span class="na">action=</span><span 
class="s">"hello"</span> <span class="na">var=</span><span 
class="s">"helloLink"</span><span class="nt">&gt;</span>
-  <span class="nt">&lt;s:param</span> <span class="na">name=</span><span 
class="s">"userName"</span><span class="nt">&gt;</span>Bruce Phillips<span 
class="nt">&lt;/s:param&gt;</span>
-<span class="nt">&lt;/s:url&gt;</span>
+<pre><code class="language-jsp">...
+&lt;s:url action="hello" var="helloLink"&gt;
+  &lt;s:param name="userName"&gt;Bruce Phillips&lt;/s:param&gt;
+&lt;/s:url&gt;
 
-<span class="nt">&lt;p&gt;&lt;a</span> <span class="na">href=</span><span 
class="s">"${helloLink}"</span><span class="nt">&gt;</span>Hello Bruce 
Phillips<span class="nt">&lt;/a&gt;&lt;/p&gt;</span>
+&lt;p&gt;&lt;a href="${helloLink}"&gt;Hello Bruce Phillips&lt;/a&gt;&lt;/p&gt;
+...
 </code></pre>
-</div>
 
 <p>Rather then put the url tag as the value for the anchor tag’s href 
attribute, we’ve separated out the s:url tag into its own code block. Nested 
inside the url tag is the Struts 2 param tag. This tag lets you specify a 
parameter name (e.g. userName) and a value for that parameter (e.g. Bruce 
Phillips).</p>
 
 <p>Notice the use of the var attribute. The value of the var attribute is a 
reference we can use later in our code to refer to the url created.</p>
 
-<p>Examine the anchor tag above. Notice the value of the href attribute is 
<code class="highlighter-rouge">${helloLink\}</code>. The view page will 
substitute the hyperlink we created using the url tag for the <code 
class="highlighter-rouge">${helloLink\}</code> reference. Note that the query 
string parameter will be properly URL-encoded (<code 
class="highlighter-rouge">Bruce+Phillips</code>).</p>
+<p>Examine the anchor tag above. Notice the value of the href attribute is 
<code class="highlighter-rouge">${helloLink}</code>. The view page will 
substitute the hyperlink we created using the url tag for the <code 
class="highlighter-rouge">${helloLink}</code> reference. Note that the query 
string parameter will be properly URL-encoded (<code 
class="highlighter-rouge">Bruce+Phillips</code>).</p>
 
 <p>In the next tutorial we’ll cover how Struts can access the query string 
parameter value.</p>
 
-<p><strong>Struts 2 Form Tags</strong></p>
+<h3 id="struts-2-form-tag">Struts 2 Form Tag</h3>
 
-<p>Most applications will use several data entry forms. The Struts 2 tags make 
creating input forms easy. Consult the <em>Form Tags Reference</em>  for all 
the details about the Struts 2 form tags.</p>
+<p>Most applications will use several data entry forms. The Struts 2 tags make 
creating input forms easy. Consult the <a 
href="https://struts.apache.org/docs/form-tags.html";>Form Tags Reference</a> 
for all the details about the Struts 2 form tags.</p>
 
 <p>Each of the Struts 2 form tags has numerous attributes to mimic the normal 
HTML form tag attributes.</p>
 
 <p>To create the outer shell of the form, use the Struts 2 form tag. The 
action attribute sets the action name to submit to.</p>
 
-<p>Add the following markup to index.jsp after the Hello Bruce Phillips 
link.</p>
+<p>Add the following markup to <code 
class="highlighter-rouge">index.jsp</code> after the Hello Bruce Phillips 
link.</p>
 
 <p><strong>Struts 2 Form</strong></p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;p&gt;</span>Get your own personal hello by filling out and 
submitting this form.<span class="nt">&lt;/p&gt;</span>
+<pre><code class="language-jsp">&lt;p&gt;Get your own personal hello by 
filling out and submitting this form.&lt;/p&gt;
 
-<span class="nt">&lt;s:form</span> <span class="na">action=</span><span 
class="s">"hello"</span><span class="nt">&gt;</span>
-
-  <span class="nt">&lt;s:textfield</span> <span class="na">name=</span><span 
class="s">"userName"</span> <span class="na">label=</span><span class="s">"Your 
name"</span> <span class="nt">/&gt;</span>
-       
-  <span class="nt">&lt;s:submit</span> <span class="na">value=</span><span 
class="s">"Submit"</span> <span class="nt">/&gt;</span>
-
-<span class="nt">&lt;/s:form&gt;</span>
+&lt;s:form action="hello"&gt;
+  &lt;s:textfield name="userName" label="Your name" /&gt;
+  &lt;s:submit value="Submit" /&gt;
+&lt;/s:form&gt;
 </code></pre>
-</div>
 
-<p>The Struts 2 <em>textfield</em>  tag provides a input html tag of tag text 
and the submit tag creates a submit button. When the index page is return by 
the server to the browser you should see:</p>
+<p>The Struts 2 textfield tag provides a input html tag of tag text and the 
submit tag creates a submit button. When the index page is return by the server 
to the browser you should see:</p>
 
-<p><img src="attachments/att14974996_Struts Form.png" alt="Struts Form.png" 
/></p>
+<p><img src="attachments/using_tags_form.png" alt="Struts Form.png" /></p>
 
 <p>The Struts form, textfield, and submit tags were converted to this HTML.</p>
 
 <p><strong>Struts Form Tags Converted To HTML</strong></p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;form</span> <span class="na">id=</span><span 
class="s">"hello"</span> <span class="na">name=</span><span 
class="s">"hello"</span> <span class="na">action=</span><span 
class="s">"/Using_Tags_Struts2_Mvn/hello.action;jsessionid=3471d76027b5342cab44f297b567"</span>
 <span class="na">method=</span><span class="s">"post"</span><span 
class="nt">&gt;</span>
-
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;form</span> <span class="na">id=</span><span 
class="s">"hello"</span> <span class="na">name=</span><span 
class="s">"hello"</span> <span class="na">action=</span><span 
class="s">"/using-tags/hello.action;jsessionid=6233ot11na1mtshbr292hu1w"</span> 
<span class="na">method=</span><span class="s">"post"</span><span 
class="nt">&gt;</span>
   <span class="nt">&lt;table</span> <span class="na">class=</span><span 
class="s">"wwFormTable"</span><span class="nt">&gt;</span>
-
     <span class="nt">&lt;tr&gt;</span>
       <span class="nt">&lt;td</span> <span class="na">class=</span><span 
class="s">"tdLabel"</span><span class="nt">&gt;&lt;label</span> <span 
class="na">for=</span><span class="s">"hello_userName"</span> <span 
class="na">class=</span><span class="s">"label"</span><span 
class="nt">&gt;</span>Your name:<span 
class="nt">&lt;/label&gt;&lt;/td&gt;</span>
-      <span class="nt">&lt;td&gt;&lt;input</span> <span 
class="na">type=</span><span class="s">"text"</span> <span 
class="na">name=</span><span class="s">"userName"</span> <span 
class="na">value=</span><span class="s">""</span> <span 
class="na">id=</span><span class="s">"hello_userName"</span><span 
class="nt">/&gt;&lt;/td&gt;</span>
+      <span class="nt">&lt;td</span> <span class="na">class=</span><span 
class="s">"tdInput"</span><span class="nt">&gt;&lt;input</span> <span 
class="na">type=</span><span class="s">"text"</span> <span 
class="na">name=</span><span class="s">"userName"</span> <span 
class="na">value=</span><span class="s">""</span> <span 
class="na">id=</span><span class="s">"hello_userName"</span><span 
class="nt">/&gt;&lt;/td&gt;</span>
     <span class="nt">&lt;/tr&gt;</span>
-
     <span class="nt">&lt;tr&gt;</span>
       <span class="nt">&lt;td</span> <span class="na">colspan=</span><span 
class="s">"2"</span><span class="nt">&gt;</span>
-        <span class="nt">&lt;div</span> <span class="na">align=</span><span 
class="s">"right"</span><span class="nt">&gt;</span>
-          <span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"submit"</span> <span class="na">id=</span><span 
class="s">"hello_0"</span> <span class="na">value=</span><span 
class="s">"Submit"</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;div</span> <span class="na">class=</span><span 
class="s">"formButton"</span><span class="nt">&gt;</span>
+          <span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"submit"</span> <span class="na">value=</span><span 
class="s">"Submit"</span> <span class="na">id=</span><span 
class="s">"hello_0"</span><span class="nt">/&gt;</span>
         <span class="nt">&lt;/div&gt;</span>
       <span class="nt">&lt;/td&gt;</span>
     <span class="nt">&lt;/tr&gt;</span>
-
   <span class="nt">&lt;/table&gt;</span>
 <span class="nt">&lt;/form&gt;</span>
 </code></pre>
@@ -255,21 +248,20 @@ If you want to actually read the Struts
 
 <p>In the next tutorial we’ll cover how to use Struts 2 to process this form 
submission.</p>
 
-<p><strong>Struts 2 property tag</strong></p>
+<h3 id="struts-2-property-tag">Struts 2 property tag</h3>
 
-<p>In the <a href="hello-world-using-struts2.html">Hello World</a> 
tutorial’s example application on JSP HelloWorld.jsp was this code:</p>
+<p>In the <a href="hello-world-using-struts2.html">Hello World</a> 
tutorial’s example application on JSP <code 
class="highlighter-rouge">HelloWorld.jsp</code> was this code:</p>
 
 <p><strong>Struts Property Tag</strong></p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;s:property</span> <span class="na">value=</span><span 
class="s">"messageStore.message"</span> <span class="nt">/&gt;</span>
+<pre><code class="language-jsp">&lt;s:property value="messageStore.message" 
/&gt;
 </code></pre>
-</div>
 
-<p>The most common use of the <em>property</em>  tag is used to “get” the 
value returned by calling a public get method (of the Action class) and then to 
include that value in the HTML returned to the browser.</p>
+<p>The most common use of the property tag is to “get” the value returned 
by calling a public get method (of the Action class) and then to include that 
value in the HTML returned to the browser.</p>
 
-<p>As discussed in the <a href="#PAGE_14811871">Hello World</a> tutorial, the 
value of “messageStore.message” instructs Struts 2 to first call method 
getMessageStore of the Action class. That method call returns a MessageStore 
object. The “.message” part instructs Struts 2 to call the getMessage 
method of the MessageStore object. The getMessage method returns a String which 
will be included in the HTML returned to the browser.</p>
+<p>As discussed in the <a href="hello-world-using-struts2.html">Hello 
World</a> tutorial, the value of <code 
class="highlighter-rouge">messageStore.message</code> instructs Struts 2 to 
first call method <code class="highlighter-rouge">getMessageStore</code> of the 
Action class. That method call returns a <code 
class="highlighter-rouge">MessageStore</code> object. The <code 
class="highlighter-rouge">.message</code> part instructs Struts 2 to call the 
<code class="highlighter-rouge">getMessage</code> method of the <code 
class="highlighter-rouge">MessageStore</code> object. The <code 
class="highlighter-rouge">getMessage</code> method returns a String which will 
be included in the HTML returned to the browser.</p>
 
-<p>One very useful feature of the Struts 2 property tag is that it will 
automatically convert the most common data types (int, double, boolean) to 
their String equivalents. To demonstrate this feature let’s add a static int 
variable to class HelloWorldAction.</p>
+<p>One very useful feature of the Struts 2 property tag is that it will 
automatically convert the most common data types (int, double, boolean) to 
their String equivalents. To demonstrate this feature let’s add a static int 
variable to class <code class="highlighter-rouge">HelloWorldAction</code>.</p>
 
 <p><strong>Add Static Field</strong></p>
 
@@ -278,14 +270,10 @@ If you want to actually read the Struts
 <span class="kd">public</span> <span class="kt">int</span> <span 
class="nf">getHelloCount</span><span class="p">(</span><span class="o">)</span> 
<span class="o">{</span>
     <span class="k">return</span> <span class="n">helloCount</span><span 
class="o">;</span>
 <span class="o">}</span>
-
-<span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">setHelloCount</span><span class="p">(</span><span 
class="kt">int</span> <span class="n">helloCount</span><span class="o">)</span> 
<span class="o">{</span>
-    <span class="n">HelloWorldAction</span><span class="o">.</span><span 
class="na">helloCount</span> <span class="o">=</span> <span 
class="n">helloCount</span><span class="o">;</span>
-<span class="o">}</span>
 </code></pre>
 </div>
 
-<p>Each time the execute method is called we’ll increase helloCount by 1. So 
add this code to the execute method of class HelloWorldAction.</p>
+<p>Each time the execute method is called we’ll increase <code 
class="highlighter-rouge">helloCount</code> by 1. So add this code to the <code 
class="highlighter-rouge">execute</code> method of the <code 
class="highlighter-rouge">HelloWorldAction</code> class.</p>
 
 <p><strong>Increase helloCount</strong></p>
 
@@ -293,21 +281,20 @@ If you want to actually read the Struts
 </code></pre>
 </div>
 
-<p>Whenever a user clicks one of the links on page index.jsp (or submits the 
form), method execute of class HelloWorldAction will be run and the static 
field helloCount will be increased by one.</p>
+<p>Whenever a user clicks one of the links on the page index.jsp (or submits 
the form), method <code class="highlighter-rouge">execute</code> of class <code 
class="highlighter-rouge">HelloWorldAction</code> will be run and the static 
field <code class="highlighter-rouge">helloCount</code> will be increased by 
1.</p>
 
-<p>To include the value of the helloCount attribute in the HelloWorld.jsp we 
can use the Struts 2 property tag. Add the following to HelloWorld.jsp after 
the h2 tag.</p>
+<p>To include the value of the <code 
class="highlighter-rouge">helloCount</code> attribute in the <code 
class="highlighter-rouge">HelloWorld.jsp</code> we can use the Struts 2 
property tag. Add the following to <code 
class="highlighter-rouge">HelloWorld.jsp</code> after the h2 tag.</p>
 
 <p><strong>Use Property Tag To Display helloCount Value</strong></p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;p&gt;</span>I've said hello <span 
class="nt">&lt;s:property</span> <span class="na">value=</span><span 
class="s">"helloCount"</span> <span class="nt">/&gt;</span> times!<span 
class="nt">&lt;/p&gt;</span>
+<pre><code class="language-jsp">&lt;p&gt;I've said hello &lt;s:property 
value="helloCount" /&gt; times!&lt;/p&gt;
 </code></pre>
-</div>
 
-<p>So even though the getHelloCount method returns an integer type, Struts 2 
converted it to type String and placed it into the body of the p tag.</p>
+<p>So even though the <code class="highlighter-rouge">getHelloCount</code> 
method returns an integer type, Struts 2 converted it to type String and placed 
it into the body of the p tag.</p>
 
-<p>Note that even though helloCount is a static field, the get and set methods 
for helloCount are not static. For Struts 2 to call the getHelloCount method to 
get the value of helloCount, the getHelloCount method cannot be static.</p>
+<p>Note that even though <code class="highlighter-rouge">helloCount</code> is 
a static field, the get method for <code 
class="highlighter-rouge">helloCount</code> is not static. For Struts 2 to call 
the <code class="highlighter-rouge">getHelloCount</code> method to get the 
value of <code class="highlighter-rouge">helloCount</code>, the <code 
class="highlighter-rouge">getHelloCount</code> method cannot be static.</p>
 
-<p>If the value returned by the get method is an object, then the property tag 
will cause Struts 2 to call the object’s toString method. Of course, you 
should always override Class Object’s toString method in your model classes. 
Add the following toString method to the MessageStore class:</p>
+<p>If the value returned by the get method is an object, then the property tag 
will cause Struts 2 to call the object’s <code 
class="highlighter-rouge">toString</code> method. Of course, you should always 
override Class Object’s <code class="highlighter-rouge">toString</code> 
method in your model classes. Add the following <code 
class="highlighter-rouge">toString</code> method to the <code 
class="highlighter-rouge">MessageStore</code> class:</p>
 
 <p><strong>Add toString Method To Class MessageStore</strong></p>
 
@@ -317,7 +304,7 @@ If you want to actually read the Struts
 </code></pre>
 </div>
 
-<p>Add the following to HelloWorld.jsp</p>
+<p>Add the following to <code 
class="highlighter-rouge">HelloWorld.jsp</code></p>
 
 <p><strong>Using Property Tag to Call toString</strong></p>
 
@@ -325,11 +312,11 @@ If you want to actually read the Struts
 </code></pre>
 </div>
 
-<p>Since getMessageStore of HelloWorldAction class returns a MessageStore 
object, Struts 2 will call the toString method of class MessageStore. The 
string returned by that toString method will be displayed in the browser.</p>
+<p>Since <code class="highlighter-rouge">getMessageStore</code> of <code 
class="highlighter-rouge">HelloWorldAction</code> class returns a <code 
class="highlighter-rouge">MessageStore</code> object, Struts 2 will call the 
<code class="highlighter-rouge">toString</code> method of class <code 
class="highlighter-rouge">MessageStore</code>. The string returned by that 
<code class="highlighter-rouge">toString</code> method will be displayed in the 
browser.</p>
 
-<p><img src="attachments/att14974995_displaymessagestore.png" 
alt="displaymessagestore.png" /></p>
+<p><img src="attachments/using_tags_hello.png" alt="using_tags_hello.png" 
/></p>
 
-<p>We covered a lot in this tutorial, but we’ve really only scratched the 
surface of how to use the Struts 2 tags. Consult the <em>Struts 2 Tag 
Reference</em>  for much more information about all the Struts 2 tags.</p>
+<p>We covered a lot in this tutorial, but we’ve really only scratched the 
surface of how to use the Struts 2 tags. Consult the <a 
href="https://struts.apache.org/docs/tag-reference.html";>Struts 2 Tag 
Reference</a> for much more information about all the Struts 2 tags.</p>
 
 <table>
   <tbody>


Reply via email to