Author: lukaszlenart
Date: Sun Apr 23 18:10:14 2017
New Revision: 1010979

Log:
Updates production

Added:
    
websites/production/struts/content/getting-started/attachments/using_tags_form.png
   (with props)
    
websites/production/struts/content/getting-started/attachments/using_tags_hello.png
   (with props)
Modified:
    websites/production/struts/content/docs/actionmapper.html
    websites/production/struts/content/docs/ajax-head-template.html
    websites/production/struts/content/docs/div.html
    websites/production/struts/content/docs/file-upload.html
    websites/production/struts/content/docs/freemarker.html
    websites/production/struts/content/docs/interceptors.html
    websites/production/struts/content/docs/localization.html
    websites/production/struts/content/docs/plugin-developers-guide.html
    websites/production/struts/content/docs/plugins.html
    websites/production/struts/content/docs/s2-041.html
    websites/production/struts/content/docs/sitegraph-plugin.html
    websites/production/struts/content/docs/struts-23-to-25-migration.html
    websites/production/struts/content/docs/struts-defaultxml.html
    websites/production/struts/content/docs/struts-next.html
    websites/production/struts/content/docs/tiles-plugin.html
    websites/production/struts/content/docs/tree.html
    websites/production/struts/content/docs/type-conversion.html
    websites/production/struts/content/docs/typeconversion-annotation.html
    websites/production/struts/content/docs/validation.html
    websites/production/struts/content/docs/velocity-result.html
    websites/production/struts/content/getting-started/using-tags.html

Modified: websites/production/struts/content/docs/actionmapper.html
==============================================================================
--- websites/production/struts/content/docs/actionmapper.html (original)
+++ websites/production/struts/content/docs/actionmapper.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><style type="text/css">/*<![CDATA[*/
-div.rbtoc1488973736511 {padding: 0px;}
-div.rbtoc1488973736511 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1488973736511 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1492970082840 {padding: 0px;}
+div.rbtoc1492970082840 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1492970082840 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1488973736511">
+/*]]>*/</style></p><div class="toc-macro rbtoc1492970082840">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#ActionMapper-Description">Description</a></li><li><a shape="rect" 
href="#ActionMapper-DefaultActionMapper">DefaultActionMapper</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#ActionMapper-Methodprefix">Method prefix</a></li><li><a shape="rect" 
href="#ActionMapper-Actionprefix">Action prefix</a></li><li><a shape="rect" 
href="#ActionMapper-AllowedactionnameRegEx">Allowed action name 
RegEx</a></li><li><a shape="rect" 
href="#ActionMapper-AllowedmethodnameRegEx">Allowed method name 
RegEx</a></li></ul>
 </li><li><a shape="rect" href="#ActionMapper-CustomActionMapper">Custom 
ActionMapper</a></li><li><a shape="rect" 
href="#ActionMapper-CompositeActionMapper">CompositeActionMapper</a></li><li><a 
shape="rect" 
href="#ActionMapper-PrefixBasedActionMapper">PrefixBasedActionMapper</a></li><li><a
 shape="rect" 
href="#ActionMapper-ActionMapperandActionMappingobjects">ActionMapper and 
ActionMapping objects</a>

Modified: websites/production/struts/content/docs/ajax-head-template.html
==============================================================================
--- websites/production/struts/content/docs/ajax-head-template.html (original)
+++ websites/production/struts/content/docs/ajax-head-template.html Sun Apr 23 
18:10:14 2017
@@ -140,13 +140,13 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><p>The ajax <a shape="rect" 
href="head.html">head</a> template builds upon the <a shape="rect" 
href="xhtml-head-template.html">xhtml head template</a> by providing additional 
JavaScript includes for the <a shape="rect" class="external-link" 
href="http://dojotoolkit.org"; rel="nofollow">Dojo Toolkit</a>, which is used by 
the <a shape="rect" href="ajax-a-template.html">ajax a template</a>, <a 
shape="rect" href="ajax-div-template.html">ajax div template</a> , and the <a 
shape="rect" href="ajax-tabbedpanel-template.html">ajax tabbedPanel 
template</a>. It is required to use this tag, <code>&lt;ww:head 
theme="ajax"/&gt;</code>, in your HTML <code>&lt;head&gt;</code> block if you 
wish to use AJAX feature. The contents of <strong>head.ftl</strong> are:</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/resources/template/ajax/head.ftl
 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>
 
 <div class="confluence-information-macro 
confluence-information-macro-note"><span class="aui-icon aui-icon-small 
aui-iconfont-warning confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
 <p>If you are having trouble getting the AJAX theme to work, you should 
include the above JavaScript in your page manually, changing "isDebug: false" 
to "isDebug: true".  This will log out debugging information directly to the 
screen.</p></div></div>
 
 <p>Note that Dojo is configured to use the same character encoding specified 
in <a shape="rect" href="strutsproperties.html">struts.properties</a>, 
typically UTF-8. For a simple example of how to use the <a shape="rect" 
href="head.html">head</a> tag with the AJAX theme, simply do the following in 
your HTML:</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=apps/showcase/src/main/webapp/ajax/commonInclude.jsp
 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>
 
 <div class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
 <p>The above sample is from Struts trunk; for 2.0.6 you should use 
<code>&lt;s:head debug="true"/&gt;</code>.</p></div></div></div>

Modified: websites/production/struts/content/docs/div.html
==============================================================================
--- websites/production/struts/content/docs/div.html (original)
+++ websites/production/struts/content/docs/div.html Sun Apr 23 18:10:14 2017
@@ -141,7 +141,7 @@ under the License.
         <div class="wiki-content">
             <div id="ConfluenceContent"><h2 
id="div-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=core/src/main/java/org/apache/struts2/components/Div.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>
 <div class="confluence-information-macro 
confluence-information-macro-note"><span class="aui-icon aui-icon-small 
aui-iconfont-warning confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
 <p>While this tag can be used with the <a shape="rect" 
href="simple-theme.html">simple theme</a>, <a shape="rect" 
href="xhtml-theme.html">xhtml theme</a>, and others, it is really designed to 
work best with the <a shape="rect" href="ajax-theme.html">ajax theme</a>. We 
recommend reading the <a shape="rect" href="ajax-div-template.html">ajax div 
template</a> documentation for more details.</p></div></div>
 

Modified: websites/production/struts/content/docs/file-upload.html
==============================================================================
--- websites/production/struts/content/docs/file-upload.html (original)
+++ websites/production/struts/content/docs/file-upload.html Sun Apr 23 
18:10:14 2017
@@ -140,15 +140,15 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><p>The Struts 2 framework provides 
built-in support for processing file uploads that conform to <a shape="rect" 
class="external-link" href="http://www.ietf.org/rfc/rfc1867.txt"; 
rel="nofollow">RFC 1867</a>, "Form-based File Upload in HTML". When correctly 
configured the framework will pass uploaded file(s) into your Action class. 
Support for individual and multiple file uploads are provided. When a file is 
uploaded it will typically be stored in a temporary directory. Uploaded files 
should be processed or moved by your Action class to ensure the data is not 
lost. Be aware that servers may have a security policy in place that prohibits 
you from writing to directories other than the temporary directory and the 
directories that belong to your web application.</p><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1490256820465 {padding: 0px;}
-div.rbtoc1490256820465 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1490256820465 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1492970337680 {padding: 0px;}
+div.rbtoc1492970337680 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1492970337680 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1490256820465">
+/*]]>*/</style></p><div class="toc-macro rbtoc1492970337680">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#FileUpload-Dependencies">Dependencies</a></li><li><a shape="rect" 
href="#FileUpload-BasicUsage">Basic Usage</a></li><li><a shape="rect" 
href="#FileUpload-UploadingMultipleFiles">Uploading Multiple Files</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#FileUpload-UploadingMultipleFilesusingArrays">Uploading Multiple Files 
using Arrays</a></li><li><a shape="rect" 
href="#FileUpload-UploadingMultipleFilesusingLists">Uploading Multiple Files 
using Lists</a></li></ul>
 </li><li><a shape="rect" href="#FileUpload-AdvancedConfiguration">Advanced 
Configuration</a>
-<ul class="toc-indentation"><li><a shape="rect" 
href="#FileUpload-FileSizeLimits">File Size Limits</a></li><li><a shape="rect" 
href="#FileUpload-FileTypes">File Types</a></li><li><a shape="rect" 
href="#FileUpload-ErrorMessages">Error Messages</a></li><li><a shape="rect" 
href="#FileUpload-TemporaryDirectories">Temporary Directories</a></li><li><a 
shape="rect" href="#FileUpload-AlternateLibraries">Alternate 
Libraries</a></li><li><a shape="rect" 
href="#FileUpload-Requestvalidation">Request validation</a></li></ul>
+<ul class="toc-indentation"><li><a shape="rect" 
href="#FileUpload-FileSizeLimits">File Size Limits</a></li><li><a shape="rect" 
href="#FileUpload-FileTypes">File Types</a></li><li><a shape="rect" 
href="#FileUpload-ErrorMessages">Error Messages</a></li><li><a shape="rect" 
href="#FileUpload-TemporaryDirectories">Temporary Directories</a></li><li><a 
shape="rect" href="#FileUpload-AlternateLibraries">Alternate 
Libraries</a></li><li><a shape="rect" 
href="#FileUpload-Requestvalidation">Request validation</a></li><li><a 
shape="rect" href="#FileUpload-Disablingfileuploadsupport">Disabling file 
upload support</a></li></ul>
 </li></ul>
 </div><h2 id="FileUpload-Dependencies">Dependencies</h2><p>The Struts 2 
framework leverages add-on libraries to handle the parsing of uploaded files. 
These libraries are not included in the Struts distribution, you must add them 
into your project. The libraries needed are:</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Library</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>URL</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Struts 2.0.x</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Struts 2.1.x</p></th><th colspan="1" rowspan="1" 
class="confluenceTh">Struts 2.5.x</th></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Commons-FileUpload</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><a shape="rect" class="external-link" 
href="http://commons.apache.org/fileupload/";>http://commons.apache.org/fileupload/</a></td><td
 colspan="1" rowspan="1" class="confluenc
 eTd"><p>1.1.1</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>1.2.1</p></td><td colspan="1" rowspan="1" 
class="confluenceTd">1.3.2</td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Commons-IO</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><a shape="rect" class="external-link" 
href="http://commons.apache.org/io/";>http://commons.apache.org/io/</a></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>1.0</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>1.3.2</p></td><td colspan="1" rowspan="1" 
class="confluenceTd">2.4</td></tr></tbody></table></div><p>If you are using 
Maven then you can add these libraries as dependencies in your project's 
pom.xml.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts 
2.0.x File Upload Dependencies</b></div><div class="codeContent panelContent 
pdl">
 <pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;dependency&gt;
@@ -374,7 +374,9 @@ struts.multipart.maxSize=2097152
 </pre>
 </div></div><p>When the uploaded file type does not match one of the MIME 
types specified a field error will be created as described in the next section 
entitled Error Messages. Programmatically limiting the file type means using 
the information passed in to your Action class via the 
<code>setXContentType(String contentType)</code> method. The benefit to this 
type of approach would be that it's more flexible and no interceptor 
configuration would be needed if file sizes are keep under 2 megs.</p><h3 
id="FileUpload-ErrorMessages">Error Messages</h3><p>If an error occurs several 
field errors will be added assuming that the action implements 
<code>com.opensymphony.xwork2.ValidationAware</code> or extends 
<code>com.opensymphony.xwork2.ActionSupport</code>. These error messages are 
based on several i18n values stored in struts-messages.properties, a default 
i18n file processed for all i18n requests. You can override the text of these 
messages by providing text for the following keys:</p>
 <div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Error Key</p></th><th 
colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>struts.messages.error.uploading</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>A general error that occurs 
when the file could not be uploaded</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p>struts.messages.error.file.too.large</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Occurs when the uploaded file 
is too large as specified by maximumSize.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p>struts.messages.error.content.type.not.allowed</p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>Occurs when the uploaded file 
does not match the expected content types specified</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>struts.
 messages.error.file.extension.not.allowed</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Occurs when uploaded file has disallowed 
extension</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>struts.messages.upload.error.SizeLimitExceededException</p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>Occurs when the upload request 
(as a whole) exceed configured 
<strong>struts.multipart.maxSize</strong></p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>struts.messages.upload.error.&lt;Exception 
class SimpleName&gt;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Occurs when any other exception took place during file 
upload process</p></td></tr></tbody></table></div><h3 
id="FileUpload-TemporaryDirectories">Temporary Directories</h3><p>All uploaded 
files are saved to a temporary directory by the framework before being passed 
in to an Action. Depending on the allowed file sizes it may be necessary to 
have the framework s
 tore these temporary files in an alternate location. To do this change 
<code>struts.multipart.saveDir</code> to the directory where the uploaded files 
will be placed. If this property is not set it defaults to 
<code>javax.servlet.context.tempdir</code>. Keep in mind that on some operating 
systems, like Solaris, <code>/tmp</code> is memory based and files stored in 
that directory would consume an amount of RAM approximately equal to the size 
of the uploaded file.</p><h3 id="FileUpload-AlternateLibraries">Alternate 
Libraries</h3><p>The <code>struts.multipart.parser</code> used by the 
fileUpload interceptor to handle HTTP POST requests, encoded using the 
MIME-type multipart/form-data, can be changed out. Currently there are two 
choices, jakarta and pell. The jakarta parser is a standard part of the Struts 
2 framework needing only its required libraries added to a project. The pell 
parser uses Jason Pell's multipart parser instead of the Commons-FileUpload 
library. The pell parser is a 
 Struts 2 plugin, for more details see: <a shape="rect" 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=33353";>pell
 multipart plugin</a>. There was a third alternative, cos, but it was removed 
due to licensing incompatibilities.</p><p>As from Struts version 2.3.18 a new 
implementation of&#160;<code>MultiPartRequest</code> was added 
-&#160;<code>JakartaStreamMultiPartRequest</code>. It can be used to handle 
large files, see&#160;<a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-3025";>WW-3025</a> for more 
details, but you can simple set</p><pre>&lt;constant 
name="struts.multipart.parser" value="jakarta-stream" /&gt;</pre><p>in 
struts.xml to start using it.</p><h3 id="FileUpload-Requestvalidation">Request 
validation</h3><p>The&#160;<code>struts.multipart.validationRegex</code>&#160;is
 used to define a RegEx to be used to validate if the incoming request is a 
multipart request. The request must use the <code>POST</code>&#160;metho
 d and match the RegEx, by default the RegEx is defined as follow:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">^multipart\\/form-data(; 
boundary=[a-zA-Z0-9]{1,70})?</pre>
-</div></div><p>Please read&#160;<a shape="rect" class="external-link" 
href="https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html"; 
rel="nofollow">RFC1341</a> the <strong>Multipart section</strong> for more 
details, existing Struts <code>Multipart</code>&#160;parsers support 
only&#160;<code>multipart/form-data</code>&#160;content 
type.</p><p>&#160;</p></div>
+</div></div><p>Please read&#160;<a shape="rect" class="external-link" 
href="https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html"; 
rel="nofollow">RFC1341</a> the <strong>Multipart section</strong> for more 
details, existing Struts <code>Multipart</code>&#160;parsers support 
only&#160;<code>multipart/form-data</code>&#160;content type. This option is 
available since Struts 2.3.11.</p><h3 
id="FileUpload-Disablingfileuploadsupport">Disabling file upload 
support</h3><p>You can alternatively disable the whole file upload mechanism 
defining a constant in&#160;<code>struts.xml</code>:</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;constant name="struts.multipart.enabled" 
value="false"/&gt;</pre>
+</div></div><p>With this constant in place, Struts will ignore 
a&#160;<code>Content-Type</code> header and will treat each request as an 
ordinary http request. This option is available since Struts 
2.3.11.</p><p>&#160;</p></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/freemarker.html
==============================================================================
--- websites/production/struts/content/docs/freemarker.html (original)
+++ websites/production/struts/content/docs/freemarker.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><style type="text/css">/*<![CDATA[*/
-div.rbtoc1488973678190 {padding: 0px;}
-div.rbtoc1488973678190 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1488973678190 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1492970038118 {padding: 0px;}
+div.rbtoc1492970038118 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1492970038118 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1488973678190">
+/*]]>*/</style></p><div class="toc-macro rbtoc1492970038118">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#FreeMarker-GettingStarted">Getting Started</a></li><li><a shape="rect" 
href="#FreeMarker-Servlet/JSPScopedObjects">Servlet / JSP Scoped Objects</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#FreeMarker-ApplicationScopeAttribute">Application Scope 
Attribute</a></li><li><a shape="rect" 
href="#FreeMarker-SessionScopeAttribute">Session Scope Attribute</a></li><li><a 
shape="rect" href="#FreeMarker-RequestScopeAttribute">Request Scope 
Attribute</a></li><li><a shape="rect" 
href="#FreeMarker-RequestParameter">Request Parameter</a></li><li><a 
shape="rect" href="#FreeMarker-Contextparameter">Context parameter</a></li></ul>
 </li><li><a shape="rect" href="#FreeMarker-TemplateLoading">Template 
Loading</a></li><li><a shape="rect" 
href="#FreeMarker-VariableResolution">Variable Resolution</a></li><li><a 
shape="rect" href="#FreeMarker-TagSupport">Tag Support</a></li><li><a 
shape="rect" href="#FreeMarker-TipsandTricks">Tips and Tricks</a>

Modified: websites/production/struts/content/docs/interceptors.html
==============================================================================
--- websites/production/struts/content/docs/interceptors.html (original)
+++ websites/production/struts/content/docs/interceptors.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"><div 
class="confluence-information-macro confluence-information-macro-tip"><span 
class="aui-icon aui-icon-small aui-iconfont-approve 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The default Interceptor stack is 
designed to serve the needs of most applications. Most applications will 
<strong>not</strong> need to add Interceptors or change the Interceptor 
stack.</p></div></div><p>Many Actions share common concerns. Some Actions need 
input validated. Other Actions may need a file upload to be pre-processed. 
Another Action might need protection from a double submit. Many Actions need 
drop-down lists and other controls pre-populated before the page 
displays.</p><p>The framework makes it easy to share solutions to these 
concerns using an "Interceptor" strategy. When you request a resource that maps 
to an "action", the framework invokes the Action object. But, before the Action 
is executed, the invocatio
 n can be intercepted by another object. After the Action executes, the 
invocation could be intercepted again. Unsurprisingly, we call these objects 
"Interceptors."</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1488973538486 {padding: 0px;}
-div.rbtoc1488973538486 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1488973538486 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1492969959447 {padding: 0px;}
+div.rbtoc1492969959447 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1492969959447 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1488973538486">
+/*]]>*/</style></p><div class="toc-macro rbtoc1492969959447">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Interceptors-UnderstandingInterceptors">Understanding 
Interceptors</a></li><li><a shape="rect" 
href="#Interceptors-ConfiguringInterceptors">Configuring 
Interceptors</a></li><li><a shape="rect" 
href="#Interceptors-StackingInterceptors">Stacking Interceptors</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Interceptors-TheDefaultConfiguration">The Default 
Configuration</a></li></ul>
 </li><li><a shape="rect" href="#Interceptors-FrameworkInterceptors">Framework 
Interceptors</a>
@@ -317,8 +317,10 @@ div.rbtoc1488973538486 li {margin-left:
     &lt;bean 
type=&quot;com.opensymphony.xwork2.conversion.impl.NumberConverter&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.conversion.impl.NumberConverter&quot; 
scope=&quot;singleton&quot;/&gt;
     &lt;bean 
type=&quot;com.opensymphony.xwork2.conversion.impl.StringConverter&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.conversion.impl.StringConverter&quot; 
scope=&quot;singleton&quot;/&gt;
 
-    &lt;bean type=&quot;com.opensymphony.xwork2.TextProvider&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.TextProviderSupport&quot; 
scope=&quot;prototype&quot; /&gt;
-    &lt;bean type=&quot;com.opensymphony.xwork2.LocaleProvider&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.DefaultLocaleProvider&quot; 
scope=&quot;singleton&quot; /&gt;
+    &lt;bean type=&quot;com.opensymphony.xwork2.TextProvider&quot; 
name=&quot;system&quot; 
class=&quot;com.opensymphony.xwork2.DefaultTextProvider&quot; 
scope=&quot;singleton&quot; /&gt;
+    &lt;bean type=&quot;com.opensymphony.xwork2.LocalizedTextProvider&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.util.DefaultLocalizedTextProvider&quot; 
scope=&quot;singleton&quot; /&gt;
+    &lt;bean type=&quot;com.opensymphony.xwork2.TextProviderFactory&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.StrutsTextProviderFactory&quot; 
scope=&quot;singleton&quot; /&gt;
+    &lt;bean type=&quot;com.opensymphony.xwork2.LocaleProviderFactory&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.DefaultLocaleProviderFactory&quot; 
scope=&quot;singleton&quot; /&gt;
 
     &lt;bean type=&quot;org.apache.struts2.components.UrlRenderer&quot; 
name=&quot;struts&quot; 
class=&quot;org.apache.struts2.components.ServletUrlRenderer&quot;/&gt;
     &lt;bean type=&quot;org.apache.struts2.views.util.UrlHelper&quot; 
name=&quot;struts&quot; 
class=&quot;org.apache.struts2.views.util.DefaultUrlHelper&quot;/&gt;
@@ -327,7 +329,6 @@ div.rbtoc1488973538486 li {margin-left:
     &lt;bean 
type=&quot;com.opensymphony.xwork2.util.reflection.ReflectionProvider&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.ognl.OgnlReflectionProvider&quot; /&gt;
     &lt;bean 
type=&quot;com.opensymphony.xwork2.util.reflection.ReflectionContextFactory&quot;
 name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.ognl.OgnlReflectionContextFactory&quot; 
/&gt;
 
-    &lt;bean type=&quot;com.opensymphony.xwork2.TextProvider&quot; 
name=&quot;system&quot; 
class=&quot;com.opensymphony.xwork2.DefaultTextProvider&quot; /&gt;
     &lt;bean type=&quot;com.opensymphony.xwork2.conversion.NullHandler&quot; 
name=&quot;java.lang.Object&quot; 
class=&quot;com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler&quot;
 /&gt;
 
     &lt;bean 
type=&quot;com.opensymphony.xwork2.validator.ActionValidatorManager&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.validator.AnnotationActionValidatorManager&quot;
 /&gt;

Modified: websites/production/struts/content/docs/localization.html
==============================================================================
--- websites/production/struts/content/docs/localization.html (original)
+++ websites/production/struts/content/docs/localization.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><style type="text/css">/*<![CDATA[*/
-div.rbtoc1490686613414 {padding: 0px;}
-div.rbtoc1490686613414 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1490686613414 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1492970016830 {padding: 0px;}
+div.rbtoc1492970016830 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1492970016830 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1490686613414">
+/*]]>*/</style></p><div class="toc-macro rbtoc1492970016830">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Localization-Overview">Overview</a></li><li><a shape="rect" 
href="#Localization-ResourceBundleSearchOrder">Resource Bundle Search Order</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Localization-Defaultaction'sclass">Default action's class</a></li><li><a 
shape="rect" href="#Localization-UsinggetTextfromaTag">Using getText from a 
Tag</a></li><li><a shape="rect" href="#Localization-Usingthetexttag">Using the 
text tag</a></li><li><a shape="rect" href="#Localization-UsingtheI18ntag">Using 
the I18n tag</a></li><li><a shape="rect" 
href="#Localization-UsingtheKeyattributeofUITags">Using the Key attribute of UI 
Tags</a></li></ul>
 </li><li><a shape="rect" href="#Localization-I18nInterceptor">I18n 
Interceptor</a></li><li><a shape="rect" 
href="#Localization-GlobalResources(struts.custom.i18n.resources)instruts.properties">Global
 Resources (struts.custom.i18n.resources) in struts.properties</a></li><li><a 
shape="rect" href="#Localization-FormattingDatesandNumbers">Formatting Dates 
and Numbers</a></li><li><a shape="rect" 
href="#Localization-ComparisonwithStruts1">Comparison with Struts 
1</a></li><li><a shape="rect" 
href="#Localization-CustomTextProviderandTextProviderFactory">Custom 
TextProvider and TextProviderFactory</a></li><li><a shape="rect" 
href="#Localization-Next:">Next: Type Conversion</a></li></ul>

Modified: websites/production/struts/content/docs/plugin-developers-guide.html
==============================================================================
--- websites/production/struts/content/docs/plugin-developers-guide.html 
(original)
+++ websites/production/struts/content/docs/plugin-developers-guide.html Sun 
Apr 23 18:10:14 2017
@@ -125,7 +125,7 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent">Apache Struts 2 provides a simple <a 
shape="rect" href="plugins.html">plugin architecture</a> so that developers can 
extend the framework just by adding a JAR to the application's classpath. Since 
plugins are contained in a JAR, they are easy to share with others. Several 
plugins are bundled with the framework, and others are available from 
third-party sources.<ul><li><a shape="rect" 
href="plugins.html">Plugins</a></li><li><a shape="rect" 
href="extending-an-application-with-custom-plugins.html">Extending an 
Application with Custom Plugins</a></li></ul><h3 
id="PluginDevelopersGuide-BundledPlugins">Bundled Plugins</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><ul><li><a shape="rect" 
href="bean-validation-plugin.html">Bean Validation Plugin</a> (2.5+)</li><li><a 
shape="rect" href="cdi-plugin.html">CDI (JSR 299) Plugin</a> 
(2.3.1+)</li><li><a shape="rect" href="codebehind-plu
 gin.html">Codebehind Plugin</a> (&lt; 2.5)</li><li><a shape="rect" 
href="config-browser-plugin.html">Config Browser Plugin</a></li><li><a 
shape="rect" href="convention-plugin.html">Convention Plugin</a> 
(2.1.3+)</li><li><a shape="rect" href="dwr-plugin.html">DWR 
Plugin</a></li><li><a shape="rect" href="embedded-jsp-plugin.html">Embedded JSP 
Plugin</a> (2.1.7+)</li><li><a shape="rect" 
href="jasperreports-plugin.html">JasperReports Plugin</a></li><li><a 
shape="rect" href="java-8-support-plugin.html">Java 8 Support Plugin</a> 
(2.3.21 - 2.5.2)</li><li><a shape="rect" 
href="javatemplates-plugin.html">Javatemplates Plugin</a> (2.1.3+)</li><li><a 
shape="rect" href="jfreechart-plugin.html">JFreeChart Plugin</a></li><li><a 
shape="rect" href="jsf-plugin.html">JSF Plugin</a> <span>(</span>&lt; 
2.5<span>)</span></li><li><a shape="rect" href="json-plugin.html">JSON 
Plugin</a> (2.1.7+)</li><li><a shape="rect" href="junit-plugin.html">JUnit 
Plugin</a></li></ul></td><td colspan="1" rowspan="1" clas
 s="confluenceTd"><ul><li><a shape="rect" href="oval-plugin.html">OVal 
Plugin</a> (2.1.7+)</li><li><a shape="rect" href="osgi-plugin.html">OSGi 
Plugin</a> (2.1.7+)</li><li><a shape="rect" href="plexus-plugin.html">Plexus 
Plugin</a></li><li><a shape="rect" href="portlet-plugin.html">Portlet 
Plugin</a></li><li><a shape="rect" href="portlet-tiles-plugin.html">Portlet 
Tiles Plugin</a> (2.3.5+)</li><li><a shape="rect" href="rest-plugin.html">REST 
Plugin</a> (2.1.1+)</li><li><a shape="rect" 
href="sitegraph-plugin.html">SiteGraph Plugin</a></li><li><a shape="rect" 
href="sitemesh-plugin.html">SiteMesh Plugin</a></li><li><a shape="rect" 
href="spring-plugin.html">Spring Plugin</a></li><li><a shape="rect" 
href="struts-1-plugin.html">Struts 1 Plugin</a> <span>(</span>&lt; 
2.5<span>)</span></li><li><a shape="rect" href="testng-plugin.html">TestNG 
Plugin</a></li><li><a shape="rect" href="tiles-plugin.html">Tiles 
Plugin</a></li><li><a shape="rect" href="tiles-3-plugin.html">Tiles 3 
Plugin</a> (&lt;
  2.5)</li></ul></td></tr></tbody></table></div><p><img class="emoticon 
emoticon-tick" 
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png";
 data-emoticon-name="tick" alt="(tick)"> For a complete list of bundled and 
third-party plugins, visit the <a shape="rect" class="external-link" 
href="http://cwiki.apache.org/S2PLUGINS/home.html";>Plugin Registry.</a>.</p><h2 
id="PluginDevelopersGuide-Next:">Next: <a shape="rect" 
href="architects-guide.html">Architects Guide</a></h2></div>
+            <div id="ConfluenceContent">Apache Struts 2 provides a simple <a 
shape="rect" href="plugins.html">plugin architecture</a> so that developers can 
extend the framework just by adding a JAR to the application's classpath. Since 
plugins are contained in a JAR, they are easy to share with others. Several 
plugins are bundled with the framework, and others are available from 
third-party sources.<ul><li><a shape="rect" 
href="plugins.html">Plugins</a></li><li><a shape="rect" 
href="extending-an-application-with-custom-plugins.html">Extending an 
Application with Custom Plugins</a></li></ul><h3 
id="PluginDevelopersGuide-BundledPlugins">Bundled Plugins</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><ul><li><a shape="rect" 
href="bean-validation-plugin.html">Bean Validation Plugin</a> (2.5+)</li><li><a 
shape="rect" href="cdi-plugin.html">CDI (JSR 299) Plugin</a> 
(2.3.1+)</li><li><a shape="rect" href="codebehind-plu
 gin.html">Codebehind Plugin</a> (&lt; 2.5)</li><li><a shape="rect" 
href="config-browser-plugin.html">Config Browser Plugin</a></li><li><a 
shape="rect" href="convention-plugin.html">Convention Plugin</a> 
(2.1.3+)</li><li><a shape="rect" href="dwr-plugin.html">DWR 
Plugin</a></li><li><a shape="rect" href="embedded-jsp-plugin.html">Embedded JSP 
Plugin</a> (2.1.7+)</li><li><a shape="rect" 
href="jasperreports-plugin.html">JasperReports Plugin</a></li><li><a 
shape="rect" href="java-8-support-plugin.html">Java 8 Support Plugin</a> 
(2.3.21 - 2.5.2)</li><li><a shape="rect" 
href="javatemplates-plugin.html">Javatemplates Plugin</a> (2.1.3+)</li><li><a 
shape="rect" href="jfreechart-plugin.html">JFreeChart Plugin</a></li><li><a 
shape="rect" href="jsf-plugin.html">JSF Plugin</a> <span>(</span>&lt; 
2.5<span>)</span></li><li><a shape="rect" href="json-plugin.html">JSON 
Plugin</a> (2.1.7+)</li><li><a shape="rect" href="junit-plugin.html">JUnit 
Plugin</a></li></ul></td><td colspan="1" rowspan="1" clas
 s="confluenceTd"><ul><li><a shape="rect" href="oval-plugin.html">OVal 
Plugin</a> (2.1.7+)</li><li><a shape="rect" href="osgi-plugin.html">OSGi 
Plugin</a> (2.1.7+)</li><li><a shape="rect" href="plexus-plugin.html">Plexus 
Plugin</a></li><li><a shape="rect" href="portlet-plugin.html">Portlet 
Plugin</a></li><li><a shape="rect" href="portlet-tiles-plugin.html">Portlet 
Tiles Plugin</a> (2.3.5+)</li><li><a shape="rect" href="rest-plugin.html">REST 
Plugin</a> (2.1.1+)</li><li>Deprecated: <a shape="rect" 
href="sitegraph-plugin.html">SiteGraph Plugin</a></li><li><a shape="rect" 
href="sitemesh-plugin.html">SiteMesh Plugin</a></li><li><a shape="rect" 
href="spring-plugin.html">Spring Plugin</a></li><li><a shape="rect" 
href="struts-1-plugin.html">Struts 1 Plugin</a> <span>(</span>&lt; 
2.5<span>)</span></li><li><a shape="rect" href="testng-plugin.html">TestNG 
Plugin</a></li><li><a shape="rect" href="tiles-plugin.html">Tiles 
Plugin</a></li><li><a shape="rect" href="tiles-3-plugin.html">Tiles 3 Plug
 in</a> (&lt; 2.5)</li></ul></td></tr></tbody></table></div><p><img 
class="emoticon emoticon-tick" 
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png";
 data-emoticon-name="tick" alt="(tick)"> For a complete list of bundled and 
third-party plugins, visit the <a shape="rect" class="external-link" 
href="http://cwiki.apache.org/S2PLUGINS/home.html";>Plugin Registry.</a>.</p><h2 
id="PluginDevelopersGuide-Next:">Next: <a shape="rect" 
href="architects-guide.html">Architects Guide</a></h2></div>
         </div>
 
                     <div class="tabletitle">

Modified: websites/production/struts/content/docs/plugins.html
==============================================================================
--- websites/production/struts/content/docs/plugins.html (original)
+++ websites/production/struts/content/docs/plugins.html Sun Apr 23 18:10:14 
2017
@@ -146,10 +146,10 @@ under the License.
 &lt;link rel="stylesheet" type="text/css" href="%{#css}" /&gt;
 </pre>
 </div></div><p>Read also <a shape="rect" class="external-link" 
href="http://struts.apache.org/2.x/struts2-core/apidocs/org/apache/struts2/dispatcher/StaticContentLoader.html";>StaticContentLoader
 JavaDoc</a>.</p><h2 id="Plugins-ExtensionPoints">Extension 
Points</h2><p>Extension points allow a plugin to override a key class in the 
Struts framework with an alternate implementation. For example, a plugin could 
provide a new class to create Action classes or map requests to 
Actions.</p><p>The following extension points are available in Struts 
2:</p><p><table border="1" summary=""><tr><th colspan="1" 
rowspan="1">Type</th><th colspan="1" rowspan="1">Property</th><th colspan="1" 
rowspan="1">Scope</th><th colspan="1" rowspan="1">Description</th></tr><tr><td 
colspan="1" rowspan="1">com.opensymphony.xwork2.ObjectFactory</td><td 
colspan="1" rowspan="1">struts.objectFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates actions, results, 
and interceptors</td></
 tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.factory.ActionFactory</td><td colspan="1" 
rowspan="1">struts.objectFactory.actionFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Dedicated factory used to 
create Actions, you can implement/extend existing one instead of defining new 
ObjectFactory</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.factory.ResultFactory</td><td colspan="1" 
rowspan="1">struts.objectFactory.resultFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Dedicated factory used to 
create Results, you can implement/extend existing one instead of defining new 
ObjectFactory</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.factory.InterceptorFactory</td><td 
colspan="1" rowspan="1">struts.objectFactory.interceptorFactory</td><td 
colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Dedicated 
factory used to create Interceptors, you can implement/extend e
 xisting one instead of defining new ObjectFactory</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.factory.ConverterFactory</td><td 
colspan="1" rowspan="1">struts.objectFactory.converterFactory</td><td 
colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Dedicated 
factory used to create TypeConverters, you can implement/extend existing one 
instead of defining new ObjectFactory</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.factory.ValidatorFactory</td><td 
colspan="1" rowspan="1">struts.objectFactory.validatorFactory</td><td 
colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Dedicated 
factory used to create Validators, you can implement/extend existing one 
instead of defining new ObjectFactory</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.ActionProxyFactory</td><td colspan="1" 
rowspan="1">struts.actionProxyFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates the Actio
 nProxy</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.util.ObjectTypeDeterminer</td><td 
colspan="1" rowspan="1">struts.objectTypeDeterminer</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Determines what the key 
and element class of a Map or Collection should be</td></tr><tr><td colspan="1" 
rowspan="1">org.apache.struts2.dispatcher.mapper.ActionMapper</td><td 
colspan="1" rowspan="1">struts.mapper.class</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Determines the 
ActionMapping from a request and a URI from an ActionMapping</td></tr><tr><td 
colspan="1" 
rowspan="1">org.apache.struts2.dispatcher.multipart.MultiPartRequest</td><td 
colspan="1" rowspan="1">struts.multipart.parser</td><td colspan="1" 
rowspan="1">per request</td><td colspan="1" rowspan="1">Parses a multipart 
request (file upload)</td></tr><tr><td colspan="1" 
rowspan="1">org.apache.struts2.views.freemarker.FreemarkerManager</td><td 
colspan="1" rowspan="1"
 >struts.freemarker.manager.classname</td><td colspan="1" 
 >rowspan="1">singleton</td><td colspan="1" rowspan="1">Loads and processes 
 >Freemarker templates</td></tr><tr><td colspan="1" 
 >rowspan="1">org.apache.struts2.views.velocity.VelocityManager</td><td 
 >colspan="1" rowspan="1">struts.velocity.manager.classname</td><td colspan="1" 
 >rowspan="1">singleton</td><td colspan="1" rowspan="1">Loads and processes 
 >Velocity templates</td></tr><tr><td colspan="1" 
 >rowspan="1">com.opensymphony.xwork2.validator.ActionValidatorManager</td><td 
 >colspan="1" rowspan="1">struts.actionValidatorManager</td><td colspan="1" 
 >rowspan="1">singleton</td><td colspan="1" rowspan="1">Main interface for 
 >validation managers (regular and annotation based).  Handles both the loading 
 >of
-        configuration and the actual validation (since 2.1)</td></tr><tr><td 
colspan="1" rowspan="1">com.opensymphony.xwork2.util.ValueStackFactory</td><td 
colspan="1" rowspan="1">struts.valueStackFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates value stacks 
(since 2.1)</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.reflection.ReflectionProvider</td><td 
colspan="1" rowspan="1">struts.reflectionProvider</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Provides reflection 
services, key place to plug in a custom expression language (since 
2.1)</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.reflection.ReflectionContextFactory</td><td 
colspan="1" rowspan="1">struts.reflectionContextFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates reflection 
context maps used for reflection and expression language operations (since 
2.1)</td></tr><tr><td colspan="1"
  rowspan="1">com.opensymphony.xwork2.config.PackageProvider</td><td 
colspan="1" rowspan="1">N/A</td><td colspan="1" rowspan="1">singleton</td><td 
colspan="1" rowspan="1">All beans registered as PackageProvider implementations 
will be automatically included in configuration building (since 
2.1)</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.util.PatternMatcher</td><td colspan="1" 
rowspan="1">struts.patternMatcher</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Matches patterns, such as 
action names, generally used in configuration (since 2.1)</td></tr><tr><td 
colspan="1" 
rowspan="1">org.apache.struts2.views.dispatcher.DefaultStaticContentLoader</td><td
 colspan="1" rowspan="1">struts.staticContentLoader</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Loads static resources 
(since 2.1)</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.impl.XWorkConverter</td><td 
colspan="1" rowspan="1">strut
 s.xworkConverter</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" 
rowspan="1">Handles conversion logic and allows to load custom converters per 
class or per action</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.TextProvider</td><td colspan="1" 
rowspan="1">struts.xworkTextProvider</td><td colspan="1" 
rowspan="1">default</td><td colspan="1" rowspan="1">Allows provide custom 
TextProvider for whole application</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.LocaleProvider</td><td colspan="1" 
rowspan="1">struts.localeProvider</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Allows provide custom 
TextProvider for whole application</td></tr><tr><td colspan="1" 
rowspan="1">org.apache.struts2.components.UrlRenderer</td><td colspan="1" 
rowspan="1">struts.urlRenderer</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Allows provide custom 
implementation of environment specific URL rendering/creating
  class</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.UnknownHandlerManager</td><td colspan="1" 
rowspan="1">struts.unknownHandlerManager</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Implementation of this 
interface allows handle logic of unknown Actions, Methods or 
Results</td></tr><tr><td colspan="1" 
rowspan="1">org.apache.struts2.views.util.UrlHelper</td><td colspan="1" 
rowspan="1">struts.view.urlHelper</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Helper class used with 
URLRenderer to provide exact logic for building URLs</td></tr><tr><td 
colspan="1" rowspan="1">com.opensymphony.xwork2.FileManagerFactory</td><td 
colspan="1" rowspan="1">struts.fileManagerFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Used to create 
FileManager instance to access files on the File System as also to monitor if 
reload is needed,
+        configuration and the actual validation (since 2.1)</td></tr><tr><td 
colspan="1" rowspan="1">com.opensymphony.xwork2.util.ValueStackFactory</td><td 
colspan="1" rowspan="1">struts.valueStackFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates value stacks 
(since 2.1)</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.reflection.ReflectionProvider</td><td 
colspan="1" rowspan="1">struts.reflectionProvider</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Provides reflection 
services, key place to plug in a custom expression language (since 
2.1)</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.reflection.ReflectionContextFactory</td><td 
colspan="1" rowspan="1">struts.reflectionContextFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates reflection 
context maps used for reflection and expression language operations (since 
2.1)</td></tr><tr><td colspan="1"
  rowspan="1">com.opensymphony.xwork2.config.PackageProvider</td><td 
colspan="1" rowspan="1">N/A</td><td colspan="1" rowspan="1">singleton</td><td 
colspan="1" rowspan="1">All beans registered as PackageProvider implementations 
will be automatically included in configuration building (since 
2.1)</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.util.PatternMatcher</td><td colspan="1" 
rowspan="1">struts.patternMatcher</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Matches patterns, such as 
action names, generally used in configuration (since 2.1)</td></tr><tr><td 
colspan="1" 
rowspan="1">org.apache.struts2.views.dispatcher.DefaultStaticContentLoader</td><td
 colspan="1" rowspan="1">struts.staticContentLoader</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Loads static resources 
(since 2.1)</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.impl.XWorkConverter</td><td 
colspan="1" rowspan="1">strut
 s.xworkConverter</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" 
rowspan="1">Handles conversion logic and allows to load custom converters per 
class or per action</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.TextProvider</td><td colspan="1" 
rowspan="1">struts.xworkTextProvider</td><td colspan="1" 
rowspan="1">default</td><td colspan="1" rowspan="1">Allows provide custom 
TextProvider for whole application</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.LocaleProvider</td><td colspan="1" 
rowspan="1">struts.localeProvider</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">DEPRECATED! Allows 
provide custom TextProvider for whole application - instead this endpoint use 
<b>struts.localeProviderFactory</b></td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.LocaleProviderFactory</td><td colspan="1" 
rowspan="1">struts.localeProviderFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowsp
 an="1">Allows provide custom LocaleProvider for whole 
application</td></tr><tr><td colspan="1" 
rowspan="1">org.apache.struts2.components.UrlRenderer</td><td colspan="1" 
rowspan="1">struts.urlRenderer</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Allows provide custom 
implementation of environment specific URL rendering/creating 
class</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.UnknownHandlerManager</td><td colspan="1" 
rowspan="1">struts.unknownHandlerManager</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Implementation of this 
interface allows handle logic of unknown Actions, Methods or 
Results</td></tr><tr><td colspan="1" 
rowspan="1">org.apache.struts2.views.util.UrlHelper</td><td colspan="1" 
rowspan="1">struts.view.urlHelper</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Helper class used with 
URLRenderer to provide exact logic for building URLs</td></tr><tr><td 
colspan="1" rowsp
 an="1">com.opensymphony.xwork2.FileManagerFactory</td><td colspan="1" 
rowspan="1">struts.fileManagerFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Used to create 
FileManager instance to access files on the File System as also to monitor if 
reload is needed,
     can be implemented / overwritten to meet specific an application server 
needs
     </td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.impl.CollectionConverter</td><td 
colspan="1" rowspan="1">struts.converter.collection</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Converter used to convert 
any object to Collection and back</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.impl.ArrayConverter</td><td 
colspan="1" rowspan="1">struts.converter.array</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Converter used to convert 
any object to Array and back</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.impl.DateConverter</td><td 
colspan="1" rowspan="1">struts.converter.date</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Converter used to convert 
any object to Date and back</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.impl.NumberConverter</td><td 
colspan="1" rowspan="1">struts.conv
 erter.number</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" 
rowspan="1">Converter used to convert any object to Number and 
back</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.impl.StringConverter</td><td 
colspan="1" rowspan="1">struts.converter.string</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Converter used to convert 
any object to String and back</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.ConversionPropertiesProcessor</td><td
 colspan="1" rowspan="1">struts.conversion.properties.processor</td><td 
colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Process 
Properties to create converters</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.ConversionPropertiesProcessor</td><td
 colspan="1" rowspan="1">struts.converter.file.processor</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Process 
&lt;class&gt;-conversion.pro
 perties file create converters&lt;/class&gt;</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.ConversionAnnotationProcessor</td><td
 colspan="1" rowspan="1">struts.converter.annotation.processor</td><td 
colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Process 
TypeConversion annotation to create converters</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.TypeConverterCreator</td><td 
colspan="1" rowspan="1">struts.converter.creator</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates user 
converters</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.TypeConverterHolder</td><td 
colspan="1" rowspan="1">struts.converter.holder</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Holds user converters' 
instances</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.util.TextParser</td><td colspan="1" 
rowspan="1">struts.expression.parse
 r</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" 
rowspan="1">Used to parse expressions like ${foo.bar} or %{bar.foo} but it is 
up tp the TextParser's
-        implementation what kind of opening char to use (#, $, %, 
etc)</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.ExcludedPatternsChecker</td><td colspan="1" 
rowspan="1">struts.excludedPatterns.checker</td><td colspan="1" 
rowspan="1">request</td><td colspan="1" rowspan="1">Used across different 
interceptors to check if given string matches one of the excluded 
patterns</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.AcceptedPatternsChecker</td><td colspan="1" 
rowspan="1">struts.acceptedPatterns.checker</td><td colspan="1" 
rowspan="1">request</td><td colspan="1" rowspan="1">Used across different 
interceptors to check if given string matches one of the accepted 
patterns</td></tr><tr><td colspan="1" 
rowspan="1">org.apache.struts2.util.ContentTypeMatcher</td><td colspan="1" 
rowspan="1">struts.contentTypeMatcher</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Matches content type of 
uploaded files (since 2.3.22)</td></tr></t
 able></p>
+        implementation what kind of opening char to use (#, $, %, 
etc)</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.ExcludedPatternsChecker</td><td colspan="1" 
rowspan="1">struts.excludedPatterns.checker</td><td colspan="1" 
rowspan="1">request</td><td colspan="1" rowspan="1">Used across different 
interceptors to check if given string matches one of the excluded 
patterns</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.AcceptedPatternsChecker</td><td colspan="1" 
rowspan="1">struts.acceptedPatterns.checker</td><td colspan="1" 
rowspan="1">request</td><td colspan="1" rowspan="1">Used across different 
interceptors to check if given string matches one of the accepted 
patterns</td></tr><tr><td colspan="1" 
rowspan="1">org.apache.struts2.util.ContentTypeMatcher</td><td colspan="1" 
rowspan="1">struts.contentTypeMatcher</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Matches content type of 
uploaded files (since 2.3.22)</td></tr><tr
 ><td colspan="1" 
 >rowspan="1">com.opensymphony.xwork2.LocalizedTextProvider</td><td colspan="1" 
 >rowspan="1">struts.localizedTextProvider</td><td colspan="1" 
 >rowspan="1">singleton</td><td colspan="1" rowspan="1">Provides access to 
 >resource bundles used to localise messages (since 
 >2.5.11)</td></tr></table></p>
 <h2 id="Plugins-PluginExamples">Plugin Examples</h2><p>Let's look at two 
similar but different plugins bundled with the core distribution.</p><h3 
id="Plugins-Sitemeshplugin">Sitemesh plugin</h3><p><a shape="rect" 
class="external-link" href="http://opensymphony.com/sitemesh/"; 
rel="nofollow">SiteMesh</a> is a popular alternative to Tiles. SiteMesh 
provides a common look-and-feel to an application's pages by automatically 
wrapping a plain page with common elements like headers and menubars.</p><p>The 
<code>sitemesh-plugin.jar</code> contains several classes, a standard JAR 
manifest, and a plugin configuration file.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;"> + META-INF/
    + manifest.mf

Modified: websites/production/struts/content/docs/s2-041.html
==============================================================================
--- websites/production/struts/content/docs/s2-041.html (original)
+++ websites/production/struts/content/docs/s2-041.html Sun Apr 23 18:10:14 2017
@@ -139,7 +139,7 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><h2 
id="S2-041-Summary">Summary</h2>Possible DoS attack when using 
<code>URLValidator</code><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Who should read this</p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p>All Struts 2 developers and 
users</p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Impact of vulnerability</p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Possible DoS attack when using 
URLValidator</p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Maximum security rating</p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Low</p></td></tr><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Recommendation</p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Upgrade to<span>&#160;</span><a 
shape="rect" href="version-notes-2329.html">Struts 2.3.29</a> or <a 
shape="rect" href="version-notes-2
 51.html">Struts 2.5.1</a></p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Affected Software</p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Struts 2.3.20 - Struts <span style="color: 
rgb(23,35,59);">Struts 2.3.28.1 and Struts 2.5</span></p></td></tr><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Reporter</p></th><td 
colspan="1" rowspan="1" class="confluenceTd"><p>ASAI Ken tc535mr2 at gmail dot 
com</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>CVE 
Identifier</p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>CVE-2016-4465</p></td></tr></tbody></table></div><h2 
id="S2-041-Problem">Problem</h2><p>If an application allows enter na URL field 
in a form and built-in <code>URLValidator</code>&#160;is used, it is possible 
to prepare a special URL which will be used to overload server process when 
performing validation of the URL.</p><h2 
id="S2-041-Solution">Solution</h2><p>Upgrade to Apache Struts version 2.3.29 or 
2.5
 .1.</p><h2 id="S2-041-Backwardcompatibility">Backward compatibility</h2><p>No 
backward incompatibility issues are expected.</p><h2 
id="S2-041-Workaround">Workaround</h2><p>You can redefine RegEx used by 
<code>URLValidator</code>&#160;as below:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+            <div id="ConfluenceContent"><h2 
id="S2-041-Summary">Summary</h2>Possible DoS attack when using 
<code>URLValidator</code><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Who should read this</p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p>All Struts 2 developers and 
users</p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Impact of vulnerability</p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Possible DoS attack when using 
URLValidator</p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Maximum security rating</p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Low</p></td></tr><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Recommendation</p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Upgrade to<span>&#160;</span><a 
shape="rect" href="version-notes-2329.html">Struts 2.3.29</a> or <a 
shape="rect" href="version-notes-2
 51.html">Struts 2.5.1</a></p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Affected Software</p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Struts 2.3.20 -<span style="color: rgb(23,35,59);"> 
2.3.28.1 and Struts 2.5</span></p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Reporter</p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>ASAI Ken tc535mr2 at gmail dot com</p></td></tr><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p>CVE Identifier</p></th><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>CVE-2016-4465</p></td></tr></tbody></table></div><h2 
id="S2-041-Problem">Problem</h2><p>If an application allows enter na URL field 
in a form and built-in <code>URLValidator</code>&#160;is used, it is possible 
to prepare a special URL which will be used to overload server process when 
performing validation of the URL.</p><h2 
id="S2-041-Solution">Solution</h2><p>Upgrade to Apache Struts version 2.3.29 or 
2.5.1.</p><h2 id=
 "S2-041-Backwardcompatibility">Backward compatibility</h2><p>No backward 
incompatibility issues are expected.</p><h2 
id="S2-041-Workaround">Workaround</h2><p>You can redefine RegEx used by 
<code>URLValidator</code>&#160;as below:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;validator type="url"&gt;
     &lt;param name="fieldName"&gt;myHomePage&lt;/param&gt;
     &lt;param 
name="urlRegex"&gt;^(https?|ftp):\\/\\/(([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&amp;=-]|%[0-9a-f]{2})+(:([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&amp;=-]|%[0-9a-f]{2})+)?@)?(#?)((([a-z0-9]\\.|[a-z0-9][a-z0-9-]*[a-z0-9]\\.)*[a-z][a-z0-9-]*[a-z0-9]|((\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5]))(:\\d+)?)(((\\/{0,1}([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&amp;=-]|%[0-9a-f]{2})*)*(\\?([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&amp;=-]|%[0-9a-f]{2})*)?)?)?(#([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&amp;=-]|%[0-9a-f]{2})*)?$&lt;/param&gt;

Modified: websites/production/struts/content/docs/sitegraph-plugin.html
==============================================================================
--- websites/production/struts/content/docs/sitegraph-plugin.html (original)
+++ websites/production/struts/content/docs/sitegraph-plugin.html Sun Apr 23 
18:10:14 2017
@@ -139,7 +139,7 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><p>The SiteGraph plugingenerates 
graphical diagrams representing the flow of your web 
application.</p><p>SiteGraph works by parsing your configuration files, Action 
classes, and view files (JSP, Velocity, and FreeMarker), and displaying a 
visual map.</p><p>Additional information can be found in the 
JavaDocs:</p><p></p><p>
+            <div id="ConfluenceContent"><div 
class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>This plugin got marked as 
deprecated since Struts 2.5.11!</p></div></div><p>&#160;</p><p>The SiteGraph 
plugingenerates graphical diagrams representing the flow of your web 
application.</p><p>SiteGraph works by parsing your configuration files, Action 
classes, and view files (JSP, Velocity, and FreeMarker), and displaying a 
visual map.</p><p>Additional information can be found in the 
JavaDocs:</p><p></p><p>
 SiteGraph is a tool that renders out GraphViz-generated images depicting your
 Struts-powered web application's flow. SiteGraph requires GraphViz be installed
 and that the "dot" executable be in your command path. You can find GraphViz
@@ -164,7 +164,7 @@ If you wish to use SiteGraph through its
 you can do that as well. All you need to do is create a new SiteGraph instance,
 optionally specify a Writer to output the dot content to, and then call
 #prepare().
-</p><p>The command line version of SiteGraph does exactly this (except for 
overriding the Writer):</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</p>The command line version of SiteGraph does exactly this (except for 
overriding the Writer):<div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 SiteGraph siteGraph = new SiteGraph(configDir, views, output, namespace);
 siteGraph.prepare();

Modified: websites/production/struts/content/docs/struts-23-to-25-migration.html
==============================================================================
--- websites/production/struts/content/docs/struts-23-to-25-migration.html 
(original)
+++ websites/production/struts/content/docs/struts-23-to-25-migration.html Sun 
Apr 23 18:10:14 2017
@@ -140,13 +140,13 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1490686616575 {padding: 0px;}
-div.rbtoc1490686616575 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1490686616575 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1492970356602 {padding: 0px;}
+div.rbtoc1492970356602 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1492970356602 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1490686616575">
+/*]]>*/</style></p><div class="toc-macro rbtoc1492970356602">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Struts2.3to2.5migration-Dependencies">Dependencies</a></li><li><a 
shape="rect" 
href="#Struts2.3to2.5migration-StrutsPrepareAndExecuteFilter">StrutsPrepareAndExecuteFilter</a></li><li><a
 shape="rect" href="#Struts2.3to2.5migration-DTD">DTD</a></li><li><a 
shape="rect" href="#Struts2.3to2.5migration-Tagsattributes">Tags 
attributes</a></li><li><a shape="rect" 
href="#Struts2.3to2.5migration-Divtag">Div tag</a></li><li><a shape="rect" 
href="#Struts2.3to2.5migration-Fieldnames">Field names</a></li><li><a 
shape="rect" href="#Struts2.3to2.5migration-Tiles">Tiles</a></li><li><a 
shape="rect" 
href="#Struts2.3to2.5migration-Temp/WorkdirectoryofApplicationServer/ServletContainer">Temp/Work
 directory of ApplicationServer/ServletContainer</a></li></ul>
-</div><h3 id="Struts2.3to2.5migration-Dependencies">Dependencies</h3><p>Update 
Struts dependencies to 2.5.<br clear="none"><br clear="none">Remove the 
following plugin dependencies because they were dropped and aren't supported 
anymore.</p><ul><li>Dojo Plugin</li><li>Codebehind Plugin</li><li>JSF 
Plugin</li><li>Struts1 Plugin</li></ul><h3 
id="Struts2.3to2.5migration-StrutsPrepareAndExecuteFilter">StrutsPrepareAndExecuteFilter</h3><p>The&#160;<code>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</code>
 was moved to 
<code>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</code>.<br
 clear="none"><br clear="none">In web.xml replace this:</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div><h3 id="Struts2.3to2.5migration-Dependencies">Dependencies</h3><p>Update 
Struts dependencies to 2.5.<br clear="none"><br clear="none">Remove the 
following plugin dependencies because they were dropped and aren't supported 
anymore.</p><ul><li>Dojo Plugin</li><li>Codebehind Plugin</li><li>JSF 
Plugin</li><li>Struts1 Plugin</li></ul><p>Please be aware that the framework is 
using Log4j2 now as a main logging layer, the existing old logging layer is 
deprecated and will be removed soon. Log4j2 supports many different logging 
implementations, please check documentations for more details.</p><h3 
id="Struts2.3to2.5migration-StrutsPrepareAndExecuteFilter">StrutsPrepareAndExecuteFilter</h3><p>The&#160;<code>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</code>
 was moved to 
<code>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</code>.<br
 clear="none"><br clear="none">In web.xml replace this:</p><div class="code 
panel pdl" style="border-width: 1px;"
 ><div class="codeContent panelContent pdl">
 <pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;filter&gt;
     &lt;filter-name&gt;struts2&lt;/filter-name&gt;
     
&lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt;

Modified: websites/production/struts/content/docs/struts-defaultxml.html
==============================================================================
--- websites/production/struts/content/docs/struts-defaultxml.html (original)
+++ websites/production/struts/content/docs/struts-defaultxml.html Sun Apr 23 
18:10:14 2017
@@ -273,8 +273,10 @@ under the License.
     &lt;bean 
type=&quot;com.opensymphony.xwork2.conversion.impl.NumberConverter&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.conversion.impl.NumberConverter&quot; 
scope=&quot;singleton&quot;/&gt;
     &lt;bean 
type=&quot;com.opensymphony.xwork2.conversion.impl.StringConverter&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.conversion.impl.StringConverter&quot; 
scope=&quot;singleton&quot;/&gt;
 
-    &lt;bean type=&quot;com.opensymphony.xwork2.TextProvider&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.TextProviderSupport&quot; 
scope=&quot;prototype&quot; /&gt;
-    &lt;bean type=&quot;com.opensymphony.xwork2.LocaleProvider&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.DefaultLocaleProvider&quot; 
scope=&quot;singleton&quot; /&gt;
+    &lt;bean type=&quot;com.opensymphony.xwork2.TextProvider&quot; 
name=&quot;system&quot; 
class=&quot;com.opensymphony.xwork2.DefaultTextProvider&quot; 
scope=&quot;singleton&quot; /&gt;
+    &lt;bean type=&quot;com.opensymphony.xwork2.LocalizedTextProvider&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.util.DefaultLocalizedTextProvider&quot; 
scope=&quot;singleton&quot; /&gt;
+    &lt;bean type=&quot;com.opensymphony.xwork2.TextProviderFactory&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.StrutsTextProviderFactory&quot; 
scope=&quot;singleton&quot; /&gt;
+    &lt;bean type=&quot;com.opensymphony.xwork2.LocaleProviderFactory&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.DefaultLocaleProviderFactory&quot; 
scope=&quot;singleton&quot; /&gt;
 
     &lt;bean type=&quot;org.apache.struts2.components.UrlRenderer&quot; 
name=&quot;struts&quot; 
class=&quot;org.apache.struts2.components.ServletUrlRenderer&quot;/&gt;
     &lt;bean type=&quot;org.apache.struts2.views.util.UrlHelper&quot; 
name=&quot;struts&quot; 
class=&quot;org.apache.struts2.views.util.DefaultUrlHelper&quot;/&gt;
@@ -283,7 +285,6 @@ under the License.
     &lt;bean 
type=&quot;com.opensymphony.xwork2.util.reflection.ReflectionProvider&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.ognl.OgnlReflectionProvider&quot; /&gt;
     &lt;bean 
type=&quot;com.opensymphony.xwork2.util.reflection.ReflectionContextFactory&quot;
 name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.ognl.OgnlReflectionContextFactory&quot; 
/&gt;
 
-    &lt;bean type=&quot;com.opensymphony.xwork2.TextProvider&quot; 
name=&quot;system&quot; 
class=&quot;com.opensymphony.xwork2.DefaultTextProvider&quot; /&gt;
     &lt;bean type=&quot;com.opensymphony.xwork2.conversion.NullHandler&quot; 
name=&quot;java.lang.Object&quot; 
class=&quot;com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler&quot;
 /&gt;
 
     &lt;bean 
type=&quot;com.opensymphony.xwork2.validator.ActionValidatorManager&quot; 
name=&quot;struts&quot; 
class=&quot;com.opensymphony.xwork2.validator.AnnotationActionValidatorManager&quot;
 /&gt;

Modified: websites/production/struts/content/docs/struts-next.html
==============================================================================
--- websites/production/struts/content/docs/struts-next.html (original)
+++ websites/production/struts/content/docs/struts-next.html Sun Apr 23 
18:10:14 2017
@@ -125,15 +125,15 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><h3 
id="StrutsNext-/*&lt;![CDATA[*/div.rbtoc1488974254023{padding:0px;}div.rbtoc1488974254023ul{list-style:disc;margin-left:0px;}div.rbtoc1488974254023li{margin-left:0px;padding-left:0px;}/*]]&gt;*/#StrutsNext-Whatshouldbeimproved/changed#StrutsNext-Whatshouldbeimprove"><style
 type="text/css">/*<![CDATA[*/
-div.rbtoc1488974254023 {padding: 0px;}
-div.rbtoc1488974254023 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1488974254023 li {margin-left: 0px;padding-left: 0px;}
+            <div id="ConfluenceContent"><h3 
id="StrutsNext-/*&lt;![CDATA[*/div.rbtoc1492970343672{padding:0px;}div.rbtoc1492970343672ul{list-style:disc;margin-left:0px;}div.rbtoc1492970343672li{margin-left:0px;padding-left:0px;}/*]]&gt;*/#StrutsNext-Whatshouldbeimproved/changed#StrutsNext-Whatshouldbeimprove"><style
 type="text/css">/*<![CDATA[*/
+div.rbtoc1492970343672 {padding: 0px;}
+div.rbtoc1492970343672 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1492970343672 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></h3><div class="toc-macro rbtoc1488974254023">
+/*]]>*/</style></h3><div class="toc-macro rbtoc1492970343672">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#StrutsNext-"></a></li></ul>
 <ul><li><a shape="rect" href="#StrutsNext-Whatshouldbeimproved/changed">What 
should be improved / changed</a></li><li><a shape="rect" 
href="#StrutsNext-DevelopmentplanofStruts3">Development plan of Struts 3</a>
-<ul class="toc-indentation"><li><a shape="rect" 
href="#StrutsNext-M1(akaStruts2.5)">M1 (aka Struts 2.5)</a></li><li><a 
shape="rect" href="#StrutsNext-M2(alphaStruts3)">M2 (alpha Struts 
3)</a></li><li><a shape="rect" href="#StrutsNext-M3(alphaStruts3)">M3 (alpha 
Struts 3)</a></li><li><a shape="rect" href="#StrutsNext-M4(beta1Struts3)">M4 
(beta 1 Struts 3)</a></li></ul>
+<ul class="toc-indentation"><li><a shape="rect" 
href="#StrutsNext-M1(akaStruts2.5)">M1 (aka Struts 2.5)</a></li><li><a 
shape="rect" href="#StrutsNext-M2(akaStruts2.6)">M2 (aka Struts 
2.6)</a></li><li><a shape="rect" href="#StrutsNext-M3(beta1Struts3)">M3 (beta 1 
Struts 3)</a></li><li><a shape="rect" href="#StrutsNext-M4(beta2Struts3)">M4 
(beta 2 Struts 3)</a></li></ul>
 </li><li><a shape="rect" href="#StrutsNext-Cleanupwebsite">Cleanup 
website</a></li><li><a shape="rect" 
href="#StrutsNext-Undiscussedideas">Undiscussed ideas</a></li></ul>
 </div><h1 id="StrutsNext-Whatshouldbeimproved/changed">What should be improved 
/ changed</h1><p><a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW/fixforversion/12319158";>Issues</a>
 connected with the new version <br clear="none"> <a shape="rect" 
class="external-link" 
href="https://builds.apache.org/view/S-Z/view/Struts/job/Struts3/";>Build</a> of 
the latest version</p><ul><li>Use Git instead Svn&#160;<img class="emoticon 
emoticon-tick" 
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png";
 data-emoticon-name="tick" alt="(tick)"></li><li>Switch to Java 7&#160;<img 
class="emoticon emoticon-tick" 
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png";
 data-emoticon-name="tick" alt="(tick)"></li><li>Update "internal" injection to 
use current Guice version<ul><li>Consider usage of <a shape="rect" class
 ="external-link" 
href="http://onami.apache.org/";>http://onami.apache.org/</a></li></ul></li><li>Refactorings
 for further extensibility based on questions on the list, on CodeRanch, and 
Stack Overflow<ul><li>JR plugin refactoring. Allow compiled reports as 
classpath resources.</li></ul></li><li>Refactor conversion of primitives (and 
wrappers) in XWork</li><li>Switch to <a shape="rect" class="external-link" 
href="http://commons.apache.org/ognl";>OGNL 4.0</a>.</li><li>Consider renaming 
packages to org.apache.struts3</li><li>Remove deprecated Plugins&#160;<img 
class="emoticon emoticon-tick" 
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png";
 data-emoticon-name="tick" 
alt="(tick)"><ul><li>Codebehind</li><li>Dojo</li><li>Struts1 
?</li></ul></li><li>Normalize property name camel-casing (foo.bar.BazPlugh to 
foo.bar.bazPlugh)</li><li>Check possible usage of Tiles Auto Tag (<a 
shape="rect" class="external-link" hr
 
ef="http://tiles.apache.org/tiles-autotag/";>http://tiles.apache.org/tiles-autotag/</a>)
 instead of Struts Annotations</li><li>Convention plugin should be the "normal" 
way of using Struts</li><li>Plugin to map websocket requests to Struts 
actions</li><li>API to customize property finding via arbitrary request 
parameter names ("a" -&gt; getFoo())<ul><li>Happily breaks apart the 1:1 
relationship between property paths and HTTP parameter names</li><li>Will be 
useful for obfuscation (doesn't expose java model)</li><li>Can be used to 
shorten request payload (smaller names)</li><li>Can be taken advantage by 
HDIV</li></ul></li><li>Themes cleanup<ul><li>Support HTML 5 features and Single 
Page Application development paradigm</li><li>Must output valid 
markup</li><li>Should be compatible with bootstrap, bootstrap validator, and 
other major UI platforms</li></ul></li></ul><h1 
id="StrutsNext-DevelopmentplanofStruts3">Development plan of Struts 3</h1><h2 
id="StrutsNext-M1(akaStruts2.5)">M1 (aka S
 truts 2.5)</h2><ul class="inline-task-list" 
data-inline-tasks-content-id="27832363"><li class="checked" 
data-inline-task-id="3">Request Git repo from INFRA</li><li class="checked" 
data-inline-task-id="4"><span style="line-height: 1.4285715;">Import 
project</span></li><li class="checked" data-inline-task-id="31">Remove 
deprecated plugins - moved to <a shape="rect" class="external-link" 
href="https://git1-us-west.apache.org/repos/asf?p=struts-archive.git";>struts-archive.git
 </a>repo<ul class="inline-task-list" 
data-inline-tasks-content-id="27832363"><li class="checked" 
data-inline-task-id="16">we need place for deprecated stuff (to move the source 
code to) - new project "struts-archive"</li><li class="checked" 
data-inline-task-id="17">drop support for Struts 1 (remove plugin)</li><li 
class="checked" data-inline-task-id="18">dojo plugin</li><li class="checked" 
data-inline-task-id="19">codebehind plugin</li><li class="checked" 
data-inline-task-id="20">jsf plugin</li></ul>
 
@@ -141,9 +141,9 @@ div.rbtoc1488974254023 li {margin-left:
 
 </li><li class="checked" data-inline-task-id="38">Upgrade spring plugins 
spring version to 4.x&#160;</li><li class="checked" 
data-inline-task-id="48">Move struts2 blank, jboss-blank and mailreader app to 
struts2-examples</li><li class="checked" data-inline-task-id="35">Switch to 
strict DMI by default - allow only defined methods to be accessible via DMI - 
user can always change that list</li><li class="checked" 
data-inline-task-id="49">prepare second beta</li><li 
data-inline-task-id="50">drop support for "top" object - this can be painful, 
users are using so migration path is needed</li><li 
data-inline-task-id="40">Cleanup website<ul class="inline-task-list" 
data-inline-tasks-content-id="27832363"><li data-inline-task-id="8">new user 
guide totally developed out of Confluence - people will be able to contribute 
to it via GitHub</li><li data-inline-task-id="9">Confluence (wiki) used only to 
explain more detailed given aspect of the framework (ie.: how to implement your 
own converter i
 n details)</li><li class="checked" data-inline-task-id="10">keep just one 
version of the doc (no more release/2.3.x, release/2.2.x and so on - Google 
indexes everything and people are confused)</li></ul>
 
-</li><li data-inline-task-id="51">prepare the last beta</li></ul>
+</li><li class="checked" data-inline-task-id="51">prepare the last 
beta</li></ul>
 
-<h2 id="StrutsNext-M2(alphaStruts3)">M2 (alpha Struts 3)</h2><ol><li>Finish 
merging XWork code base (rename packages)</li><li>Rename Struts 2 packages to 
org.apache.struts3</li><li>Switch to OGNL 4<ol><li>we must release it 
first</li><li>also we need better API interfaces to allow integrate Struts with 
other EL engines, ie.: MVEL - right now the whole conversion layer is hardly 
tied with OGNL</li></ol></li><li>Switch to Servlet Specification 
3.0<ol><li>drop&#160;<span style="color: rgb(34,34,34);">embedded JSP 
plugin</span></li></ol></li></ol><h2 id="StrutsNext-M3(alphaStruts3)">M3 (alpha 
Struts 3)</h2><ol><li>Divide core into api and spi</li></ol><h2 
id="StrutsNext-M4(beta1Struts3)">M4 (beta 1 Struts 3)</h2><ol><li>move plugins 
to separated project<ol><li>disconnect plugins release cycle from core 
release</li></ol></li></ol><h1 id="StrutsNext-Cleanupwebsite">Cleanup 
website</h1><p>There should be just one project website - Apache Struts. Right 
now there is the main website - Apache
  Struts project, subsite Apache Struts 1 and another subsite Apache Struts 2. 
After announcing EOL of Struts 1, we basically supporting just one version or 
rather branch - Apache Struts 2 which should be at some point converted just 
into Apache Struts (version 2.5, version 3.0, version 3.1, etc.).</p><p>With 
that in mind we should have just one website to manage the project.</p><h1 
id="StrutsNext-Undiscussedideas">Undiscussed ideas</h1><ul><li>JSR 371 support 
(<a shape="rect" class="external-link" 
href="https://jcp.org/en/jsr/detail?id=371"; 
rel="nofollow">https://jcp.org/en/jsr/detail?id=371</a>)</li><li>Better support 
for modern webframeworks like AngularJS (@grobmeier)</li><li>Make use of slf4j 
and probably log4j2 (@grobmeier) - support for slf4j is already there, thanks 
to Johannes, check <a shape="rect" 
href="logging.html">Logging</a></li><li>Provide alternatives to java property 
file translations (@grobmeier)</li><li>Replace css and xhtml theme with an new 
html5 theme. (@jogep)
 </li><li>Extract XML configuration to dedicated plugin - XWork will provide 
only configuration via code, then user can decide which configuration to use - 
code, XML, convention, DB?</li><li>Should plugins move out of the Struts 
release cycle so they can independently released? (@pbenedict)</li><li>Turn all 
request and response processing into interceptors (perhaps introduce a "system 
stack" to complement a "user stack" to simplify configuration) 
(@pbenedict)</li></ul></div>
+<h2 id="StrutsNext-M2(akaStruts2.6)">M2 (aka Struts 
2.6)</h2><ol><li><p>Servlets 2.5, JSP 2.1, Java 
7</p></li><li><code>struts-api</code>&#160;module</li><li>Drop support for 
internal logging layer and use Log4j2 only</li></ol><h2 
id="StrutsNext-M3(beta1Struts3)">M3 (beta 1 Struts 3)</h2><ol><li>Servlets 3.0, 
JSP 2.2, Java 8</li><li>Finish merging XWork code base (rename 
packages)</li><li>Rename Struts 2 packages to org.apache.struts3</li><li>Switch 
to OGNL 4<ol><li>we must release it first</li><li>also we need better API 
interfaces to allow integrate Struts with other EL engines, ie.: MVEL - right 
now the whole conversion layer is hardly tied with 
OGNL</li></ol></li><li>Switch to Servlet Specification 
3.0<ol><li>drop&#160;<span style="color: rgb(34,34,34);">embedded JSP 
plugin</span></li></ol></li></ol><h2 id="StrutsNext-M4(beta2Struts3)">M4 (beta 
2 Struts 3)</h2><ol><li>move plugins to separated project (need to be 
discussed)<ol><li>disconnect plugins release cycle from core relea
 se</li></ol></li></ol><h1 id="StrutsNext-Cleanupwebsite">Cleanup 
website</h1><p>There should be just one project website - Apache Struts. Right 
now there is the main website - Apache Struts project, subsite Apache Struts 1 
and another subsite Apache Struts 2. After announcing EOL of Struts 1, we 
basically supporting just one version or rather branch - Apache Struts 2 which 
should be at some point converted just into Apache Struts (version 2.5, version 
3.0, version 3.1, etc.).</p><p>With that in mind we should have just one 
website to manage the project.</p><h1 
id="StrutsNext-Undiscussedideas">Undiscussed ideas</h1><ul><li>JSR 371 support 
(<a shape="rect" class="external-link" 
href="https://jcp.org/en/jsr/detail?id=371"; 
rel="nofollow">https://jcp.org/en/jsr/detail?id=371</a>)</li><li>Better support 
for modern webframeworks like AngularJS (@grobmeier)</li><li>Make use of slf4j 
and probably log4j2 (@grobmeier) - support for slf4j is already there, thanks 
to Johannes, check <a shape="re
 ct" href="logging.html">Logging</a></li><li>Provide alternatives to java 
property file translations (@grobmeier)</li><li>Replace css and xhtml theme 
with an new html5 theme. (@jogep)</li><li>Extract XML configuration to 
dedicated plugin - XWork will provide only configuration via code, then user 
can decide which configuration to use - code, XML, convention, 
DB?</li><li>Should plugins move out of the Struts release cycle so they can 
independently released? (@pbenedict)</li><li>Turn all request and response 
processing into interceptors (perhaps introduce a "system stack" to complement 
a "user stack" to simplify configuration) (@pbenedict)</li></ul></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/tiles-plugin.html
==============================================================================
--- websites/production/struts/content/docs/tiles-plugin.html (original)
+++ websites/production/struts/content/docs/tiles-plugin.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><style type="text/css">/*<![CDATA[*/
-div.rbtoc1488973982587 {padding: 0px;}
-div.rbtoc1488973982587 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1488973982587 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1492970273720 {padding: 0px;}
+div.rbtoc1492970273720 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1492970273720 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1488973982587">
+/*]]>*/</style></p><div class="toc-macro rbtoc1492970273720">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#TilesPlugin-Features">Features</a></li><li><a shape="rect" 
href="#TilesPlugin-Usage">Usage</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#TilesPlugin-AccessingStrutsattributes">Accessing Struts 
attributes</a></li><li><a shape="rect" 
href="#TilesPlugin-I18N">I18N</a></li></ul>
 </li><li><a shape="rect" href="#TilesPlugin-Example">Example</a></li><li><a 
shape="rect" href="#TilesPlugin-Settings">Settings</a></li><li><a shape="rect" 
href="#TilesPlugin-Installation">Installation</a></li></ul>


Reply via email to