You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2017/04/23 18:10:14 UTC

svn commit: r1010979 [2/2] - in /websites/production/struts/content: docs/ getting-started/ getting-started/attachments/

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>