Modified: websites/production/struts/content/docs/interceptors.html
==============================================================================
--- websites/production/struts/content/docs/interceptors.html (original)
+++ websites/production/struts/content/docs/interceptors.html Fri Feb  3 
13:47:41 2017
@@ -139,15 +139,15 @@ 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.rbtoc1480661696460 {padding: 0px;}
-div.rbtoc1480661696460 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1480661696460 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1484828429504 {padding: 0px;}
+div.rbtoc1484828429504 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1484828429504 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1480661696460">
+/*]]>*/</style></p><div class="toc-macro rbtoc1484828429504">
 <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>
-<ul class="toc-indentation"><li><a shape="rect" 
href="#Interceptors-MethodFiltering">Method Filtering</a></li><li><a 
shape="rect" href="#Interceptors-InterceptorParameterOverriding">Interceptor 
Parameter Overriding</a></li><li><a shape="rect" 
href="#Interceptors-InterceptorParameterOverridingInheritance">Interceptor 
Parameter Overriding Inheritance</a></li><li><a shape="rect" 
href="#Interceptors-OrderofInterceptorExecution">Order of Interceptor 
Execution</a></li></ul>
+<ul class="toc-indentation"><li><a shape="rect" 
href="#Interceptors-MethodFiltering">Method Filtering</a></li><li><a 
shape="rect" href="#Interceptors-InterceptorParameterOverriding">Interceptor 
Parameter Overriding</a></li><li><a shape="rect" 
href="#Interceptors-InterceptorParameterOverridingInheritance">Interceptor 
Parameter Overriding Inheritance</a></li><li><a shape="rect" 
href="#Interceptors-Lazyparameters">Lazy parameters</a></li><li><a shape="rect" 
href="#Interceptors-OrderofInterceptorExecution">Order of Interceptor 
Execution</a></li></ul>
 </li><li><a shape="rect" href="#Interceptors-FAQ">FAQ</a></li><li><a 
shape="rect" href="#Interceptors-Next:">Next: Writing Interceptors</a></li></ul>
 </div><h2 id="Interceptors-UnderstandingInterceptors">Understanding 
Interceptors</h2><p>Interceptors can execute code before and after an Action is 
invoked. Most of the framework's core functionality is implemented as 
Interceptors. Features like double-submit guards, type conversion, object 
population, validation, file upload, page preparation, and more, are all 
implemented with the help of Interceptors. Each and every Interceptor is 
pluggable, so you can decide exactly which features an Action needs to 
support.</p><p>Interceptors can be configured on a per-action basis. Your own 
custom Interceptors can be mixed-and-matched with the Interceptors bundled with 
the framework. Interceptors "set the stage" for the Action classes, doing much 
of the "heavy lifting" before the Action executes.</p><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Action Lifecyle</p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceT
 d"><p><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image" 
src="interceptors.data/overview.png"></span></p></td></tr></tbody></table></div><p>In
 some cases, an Interceptor might keep an Action from firing, because of a 
double-submit or because validation failed. Interceptors can also change the 
state of an Action before it executes.</p><p>The Interceptors are defined in a 
stack that specifies the execution order. In some cases, the order of the 
Interceptors on the stack can be very important.</p><h2 
id="Interceptors-ConfiguringInterceptors">Configuring Interceptors</h2><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>struts.xml</b></div><div 
class="codeContent panelContent pdl">
 <pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;package name="default" extends="struts-default"&gt;
@@ -156,13 +156,11 @@ div.rbtoc1480661696460 li {margin-left:
        &lt;interceptor name="logger" class=".."/&gt;
    &lt;/interceptors&gt;
 
-   &lt;action name="login"
-      class="tutorial.Login"&gt;
-        &lt;interceptor-ref name="timer"/&gt;
-        &lt;interceptor-ref name="logger"/&gt;
-         &lt;result name="input"&gt;login.jsp&lt;/result&gt;
-         &lt;result name="success"
-            type="redirectAction"&gt;/secure/home&lt;/result&gt;
+   &lt;action name="login" class="tutorial.Login"&gt;
+      &lt;interceptor-ref name="timer"/&gt;
+      &lt;interceptor-ref name="logger"/&gt;
+      &lt;result name="input"&gt;login.jsp&lt;/result&gt;
+      &lt;result name="success" 
type="redirectAction"&gt;/secure/home&lt;/result&gt;
    &lt;/action&gt;
 &lt;/package&gt;
 </pre>
@@ -177,13 +175,11 @@ div.rbtoc1480661696460 li {margin-left:
         &lt;/interceptor-stack&gt;
     &lt;/interceptors&gt;
 
-&lt;action name="login"
-     class="tutuorial.Login"&gt;
+   &lt;action name="login" class="tutuorial.Login"&gt;
          &lt;interceptor-ref name="myStack"/&gt;
          &lt;result name="input"&gt;login.jsp&lt;/result&gt;
-         &lt;result name="success"
-             type="redirectAction"&gt;/secure/home&lt;/result&gt;
-&lt;/action&gt;
+         &lt;result name="success" 
type="redirectAction"&gt;/secure/home&lt;/result&gt;
+   &lt;/action&gt;
 &lt;/package&gt;
 </pre>
 </div></div><p>Looking inside <code>struts-default.xml</code>, we can see how 
it's done.</p><h3 id="Interceptors-TheDefaultConfiguration">The Default 
Configuration</h3><p></p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
@@ -250,7 +246,7 @@ div.rbtoc1480661696460 li {margin-left:
     &lt;!-- constant name=&quot;struts.excludedPackageNamePatterns&quot; 
value=&quot;^java\.lang\..*,^ognl.*,^(?!javax\.servlet\..+)(javax\..+)&quot; / 
--&gt;
 
     &lt;!-- this is simpler version of the above used with string comparison 
--&gt;
-    &lt;constant name=&quot;struts.excludedPackageNames&quot; 
value=&quot;java.lang.,ognl,javax&quot; /&gt;
+    &lt;constant name=&quot;struts.excludedPackageNames&quot; 
value=&quot;java.lang.,ognl,javax,freemarker.core,freemarker.template&quot; 
/&gt;
 
     &lt;bean class=&quot;com.opensymphony.xwork2.ObjectFactory&quot; 
name=&quot;struts&quot;/&gt;
     &lt;bean type=&quot;com.opensymphony.xwork2.factory.ResultFactory&quot; 
name=&quot;struts&quot; 
class=&quot;org.apache.struts2.factory.StrutsResultFactory&quot; /&gt;
@@ -650,7 +646,28 @@ includeMethods takes precedence over exc
   &lt;/action&gt;
 &lt;/package&gt;
 </pre>
-</div></div><p>Then, only "allowed" will be overridden for the 
"postPrepareParameterFilter" interceptor in that action, the other params will 
be null.</p><h3 id="Interceptors-OrderofInterceptorExecution">Order of 
Interceptor Execution</h3><p>Interceptors provide an excellent means to wrap 
before/after processing. The concept reduces code duplication (think 
AOP).</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+</div></div><p>Then, only "allowed" will be overridden for the 
"postPrepareParameterFilter" interceptor in that action, the other params will 
be null.</p><h3 id="Interceptors-Lazyparameters">Lazy parameters</h3><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>This functionality was added in 
Struts 2.5.9</p></div></div><p>It is possible to define an interceptor with 
parameters evaluated during action invocation. In such case the interceptor 
must be marked with&#160;<code>WithLazyParams</code>&#160;interface. This must 
be developer's decision as interceptor must be aware of having those parameters 
set during invocation and not when the interceptor is created as it happens in 
normal way.</p><p>Params are evaluated as any other expression starting with 
from action as a top object.</p><div class="code panel pdl" s
 tyle="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;action name="LazyFoo" 
class="com.opensymphony.xwork2.SimpleAction"&gt;
+  &lt;result name="success"&gt;result.jsp&lt;/result&gt;
+  &lt;interceptor-ref name="lazy"&gt;
+    &lt;param name="foo"&gt;${bar}&lt;/param&gt;
+  &lt;/interceptor-ref&gt;
+&lt;/action&gt;</pre>
+</div></div><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;">public class MockLazyInterceptor extends 
AbstractInterceptor implements WithLazyParams {
+
+    private String foo = "";
+
+    public void setFoo(String foo) {
+        this.foo = foo;
+    }
+
+    public String intercept(ActionInvocation invocation) throws Exception {
+        ....
+        return invocation.invoke();
+    }
+}</pre>
+</div></div><p>Please be aware that order of interceptors can matter when want 
to access parameters passed via request as those parameters are set by&#160;<a 
shape="rect" href="parameters-interceptor.html">Parameters 
Interceptor</a>.</p><h3 id="Interceptors-OrderofInterceptorExecution">Order of 
Interceptor Execution</h3><p>Interceptors provide an excellent means to wrap 
before/after processing. The concept reduces code duplication (think 
AOP).</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;interceptor-stack name="xaStack"&gt;
   &lt;interceptor-ref name="thisWillRunFirstInterceptor"/&gt;
   &lt;interceptor-ref name="thisWillRunNextInterceptor"/&gt;

Modified: websites/production/struts/content/docs/migration-guide.html
==============================================================================
--- websites/production/struts/content/docs/migration-guide.html (original)
+++ websites/production/struts/content/docs/migration-guide.html Fri Feb  3 
13:47:41 2017
@@ -125,7 +125,7 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><p>Getting here from there.</p><h3 
id="MigrationGuide-VersionNotes2.5.x">Version Notes 2.5.x</h3><ul><li><a 
shape="rect" href="version-notes-257.html">Version Notes 2.5.7</a></li><li><a 
shape="rect" href="version-notes-255.html">Version Notes 2.5.5</a></li><li><a 
shape="rect" href="version-notes-252.html">Version Notes 2.5.2</a></li><li><a 
shape="rect" href="version-notes-251.html">Version Notes 2.5.1</a></li><li><a 
shape="rect" href="version-notes-25.html">Version Notes 2.5</a></li></ul><h3 
id="MigrationGuide-VersionNotes2.3.x">Version Notes 2.3.x</h3><ul><li><a 
shape="rect" href="version-notes-2331.html">Version Notes 2.3.31</a></li><li><a 
shape="rect" href="version-notes-2330.html">Version Notes 2.3.30</a></li><li><a 
shape="rect" href="version-notes-2329.html">Version Notes 2.3.29</a></li><li><a 
shape="rect" href="version-notes-23281.html">Version Notes 
2.3.28.1</a></li><li><a shape="rect" href="version-notes-2328.html">Version 
Notes 2.3.28
 </a></li><li><a shape="rect" href="version-notes-23243.html">Version Notes 
2.3.24.3</a></li><li><a shape="rect" href="version-notes-23241.html">Version 
Notes 2.3.24.1</a></li><li><a shape="rect" 
href="version-notes-2324.html">Version Notes 2.3.24</a></li><li><a shape="rect" 
href="version-notes-23203.html">Version Notes 2.3.20.3</a></li><li><a 
shape="rect" href="version-notes-23201.html">Version Notes 
2.3.20.1</a></li><li><a shape="rect" href="version-notes-2320.html">Version 
Notes 2.3.20</a></li><li><a shape="rect" 
href="version-notes-23163.html">Version Notes 2.3.16.3</a></li><li><a 
shape="rect" href="version-notes-23162.html">Version Notes 
2.3.16.2</a></li><li><a shape="rect" href="version-notes-2316.html">Version 
Notes 2.3.16.1</a></li><li><a shape="rect" 
href="version-notes-2316.html">Version Notes 2.3.16</a></li><li><a shape="rect" 
href="version-notes-23153.html">Version Notes 2.3.15.3</a></li><li><a 
shape="rect" href="version-notes-23152.html">Version Notes 2.3.15.2</a></li><l
 i><a shape="rect" href="version-notes-23151.html">Version Notes 
2.3.15.1</a></li><li><a shape="rect" href="version-notes-2315.html">Version 
Notes 2.3.15</a></li><li><a shape="rect" 
href="version-notes-23143.html">Version Notes 2.3.14.3</a></li><li><a 
shape="rect" href="version-notes-23142.html">Version Notes 
2.3.14.2</a></li><li><a shape="rect" href="version-notes-23141.html">Version 
Notes 2.3.14.1</a></li><li><a shape="rect" 
href="version-notes-2314.html">Version Notes 2.3.14</a></li><li><a shape="rect" 
href="version-notes-23120.html">Version Notes 2.3.12.0</a></li><li><a 
shape="rect" href="version-notes-238.html">Version Notes 2.3.8</a></li><li><a 
shape="rect" href="version-notes-237.html">Version Notes 2.3.7</a></li><li><a 
shape="rect" href="version-notes-2341.html">Version Notes 
2.3.4.1</a></li><li><a shape="rect" href="version-notes-234.html">Version Notes 
2.3.4</a></li><li><a shape="rect" href="version-notes-233.html">Version Notes 
2.3.3</a></li><li><a shape="rect" href="versi
 on-notes-2312.html">Version Notes 2.3.1.2</a></li><li><a shape="rect" 
href="version-notes-2311.html">Version Notes 2.3.1.1</a></li><li><a 
shape="rect" href="version-notes-231.html">Version Notes 2.3.1</a></li></ul><h3 
id="MigrationGuide-VersionNotes2.2.x">Version Notes 2.2.x</h3><ul><li><a 
shape="rect" href="version-notes-2231.html">Version Notes 
2.2.3.1</a></li><li><a shape="rect" href="version-notes-223.html">Version Notes 
2.2.3</a></li><li><a shape="rect" href="version-notes-2211.html">Version Notes 
2.2.1.1</a></li><li><a shape="rect" href="version-notes-221.html">Version Notes 
2.2.1</a></li></ul><h3 id="MigrationGuide-VersionNotes2.1.x">Version Notes 
2.1.x</h3><ul><li><a shape="rect" href="version-notes-2181.html">Version Notes 
2.1.8.1</a></li><li><a shape="rect" href="version-notes-218.html">Version Notes 
2.1.8</a></li><li><a shape="rect" href="version-notes-216.html">Version Notes 
2.1.6</a></li><li><a shape="rect" href="version-notes-215.html">Version Notes 
2.1.5</a></li><li><
 a shape="rect" href="version-notes-214.html">Version Notes 
2.1.4</a></li><li><a shape="rect" href="version-notes-213.html">Version Notes 
2.1.3</a></li><li><a shape="rect" href="version-notes-212.html">Version Notes 
2.1.2</a></li><li><a shape="rect" href="version-notes-211.html">Version Notes 
2.1.1</a></li><li><a shape="rect" href="version-notes-210.html">Version Notes 
2.1.0</a></li></ul><h3 id="MigrationGuide-ReleaseNotes2.0.x">Release Notes 
2.0.x</h3><ul><li><a shape="rect" href="release-notes-2014.html">Release Notes 
2.0.14</a></li><li><a shape="rect" href="release-notes-2013.html">Release Notes 
2.0.13</a></li><li><a shape="rect" href="release-notes-2012.html">Release Notes 
2.0.12</a></li><li><a shape="rect" href="release-notes-20112.html">Release 
Notes 2.0.11.2</a></li><li><a shape="rect" 
href="release-notes-20111.html">Release Notes 2.0.11.1</a></li><li><a 
shape="rect" href="release-notes-2011.html">Release Notes 2.0.11</a></li><li><a 
shape="rect" href="release-notes-2010.html">
 Release Notes 2.0.10</a></li><li><a shape="rect" 
href="release-notes-209.html">Release Notes 2.0.9</a></li><li><a shape="rect" 
href="release-notes-208.html">Release Notes 2.0.8</a></li><li><a shape="rect" 
href="release-notes-207.html">Release Notes 2.0.7</a></li><li><a shape="rect" 
href="release-notes-206.html">Release Notes 2.0.6</a></li><li><a shape="rect" 
href="release-notes-205.html">Release Notes 2.0.5</a></li><li><a shape="rect" 
href="release-notes-204.html">Release Notes 2.0.4</a></li><li><a shape="rect" 
href="release-notes-203.html">Release Notes 2.0.3</a></li><li><a shape="rect" 
href="release-notes-202.html">Release Notes 2.0.2</a></li><li><a shape="rect" 
href="release-notes-201.html">Release Notes 2.0.1</a></li><li><a shape="rect" 
href="release-notes-200.html">Release Notes 2.0.0</a></li></ul><h3 
id="MigrationGuide-Struts2.3toStruts2.5">Struts 2.3 to Struts 2.5</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluen
 ceTh"><p><a shape="rect" href="struts-23-to-25-migration.html">Struts 2.3 to 
2.5 migration</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd">Migration guide.</td></tr></tbody></table></div><h3 
id="MigrationGuide-Struts1toStruts2">Struts 1 to Struts 2</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p><a shape="rect" 
href="comparing-struts-1-and-2.html">Comparing Struts 1 and 2</a></p></th><td 
colspan="1" rowspan="1" class="confluenceTd"><p>How are Struts 1 and Struts 2 
alike? How are they different?</p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" href="struts-1-solutions.html">Struts 1 
Solutions</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Various issues (and hopefully their solutions!) 
encountered during migrations to Struts 2.</p></td></tr><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p><a shape="rect" 
href="migration-strategies.html">Mi
 gration Strategies</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Steps and overall strategies for migrating Struts 1 
applications to Struts 2.</p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" href="migration-tools.html">Migration 
Tools</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Development tools to help aid the migration 
process.</p></td></tr></tbody></table></div><h4 
id="MigrationGuide-Tutorials">Tutorials</h4><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" class="external-link" 
href="http://www.infoq.com/news/migrating-struts2"; rel="nofollow">Migrating 
Applications to Struts 2 </a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>A three-part series by Ian Roughley (Sep 
2006)</p></td></tr></tbody></table></div><h4 
id="MigrationGuide-Roadmap">Roadmap</h4><div class="table-wrap"><table 
class="confluenceTable"><tbo
 dy><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" 
class="external-link" href="http://struts.apache.org/roadmap.html#new";>Roadmap 
FAQ</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>What's in 
store for Struts 2?</p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" class="external-link" 
href="http://www.oreillynet.com/onjava/blog/2006/10/my_history_of_struts_2.html";
 rel="nofollow">A History of Struts 2</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Don Brown's summary of 
events</p></td></tr></tbody></table></div><h3 
id="MigrationGuide-Webwork2.2toStruts2">Webwork 2.2 to Struts 2</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p><a shape="rect" 
href="key-changes-from-webwork-2.html">Key Changes From WebWork 
2</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>What has been 
removed or changed from WebWork 2.2 to St
 ruts 2</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a 
shape="rect" href="webwork-2-migration-strategies.html">WebWork 2 Migration 
Strategies</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Steps and overall strategies for migrating WebWork 2 
applications to Struts 2.</p></td></tr></tbody></table></div><h2 
id="MigrationGuide-FAQs">FAQs</h2><ul><li><a shape="rect" 
href="where-do-we-get-the-latest-version-the-framework.html">Where do we get 
the latest version the framework</a>?</li><li><a shape="rect" 
href="what-are-some-of-the-frameworks-best-features.html">What are some of the 
framework's best features</a>?</li><li><a shape="rect" 
href="what-is-the-actioncontext.html">What is the 
ActionContext?</a></li></ul><h2 id="MigrationGuide-Next:">Next: <a shape="rect" 
href="contributors-guide.html">Contributors Guide</a></h2></div>
+            <div id="ConfluenceContent"><p>Getting here from there.</p><h3 
id="MigrationGuide-VersionNotes2.5.x">Version Notes 2.5.x</h3><ul><li><a 
shape="rect" href="version-notes-259.html">Version Notes 2.5.9</a></li><li><a 
shape="rect" href="version-notes-258.html">Version Notes 2.5.8</a></li><li><a 
shape="rect" href="version-notes-255.html">Version Notes 2.5.5</a></li><li><a 
shape="rect" href="version-notes-252.html">Version Notes 2.5.2</a></li><li><a 
shape="rect" href="version-notes-251.html">Version Notes 2.5.1</a></li><li><a 
shape="rect" href="version-notes-25.html">Version Notes 2.5</a></li></ul><h3 
id="MigrationGuide-VersionNotes2.3.x">Version Notes 2.3.x</h3><ul><li><a 
shape="rect" href="version-notes-2331.html">Version Notes 2.3.31</a></li><li><a 
shape="rect" href="version-notes-2330.html">Version Notes 2.3.30</a></li><li><a 
shape="rect" href="version-notes-2329.html">Version Notes 2.3.29</a></li><li><a 
shape="rect" href="version-notes-23281.html">Version Notes 2.3.28.1</
 a></li><li><a shape="rect" href="version-notes-2328.html">Version Notes 
2.3.28</a></li><li><a shape="rect" href="version-notes-23243.html">Version 
Notes 2.3.24.3</a></li><li><a shape="rect" 
href="version-notes-23241.html">Version Notes 2.3.24.1</a></li><li><a 
shape="rect" href="version-notes-2324.html">Version Notes 2.3.24</a></li><li><a 
shape="rect" href="version-notes-23203.html">Version Notes 
2.3.20.3</a></li><li><a shape="rect" href="version-notes-23201.html">Version 
Notes 2.3.20.1</a></li><li><a shape="rect" 
href="version-notes-2320.html">Version Notes 2.3.20</a></li><li><a shape="rect" 
href="version-notes-23163.html">Version Notes 2.3.16.3</a></li><li><a 
shape="rect" href="version-notes-23162.html">Version Notes 
2.3.16.2</a></li><li><a shape="rect" href="version-notes-2316.html">Version 
Notes 2.3.16.1</a></li><li><a shape="rect" 
href="version-notes-2316.html">Version Notes 2.3.16</a></li><li><a shape="rect" 
href="version-notes-23153.html">Version Notes 2.3.15.3</a></li><li><a 
 shape="rect" href="version-notes-23152.html">Version Notes 
2.3.15.2</a></li><li><a shape="rect" href="version-notes-23151.html">Version 
Notes 2.3.15.1</a></li><li><a shape="rect" 
href="version-notes-2315.html">Version Notes 2.3.15</a></li><li><a shape="rect" 
href="version-notes-23143.html">Version Notes 2.3.14.3</a></li><li><a 
shape="rect" href="version-notes-23142.html">Version Notes 
2.3.14.2</a></li><li><a shape="rect" href="version-notes-23141.html">Version 
Notes 2.3.14.1</a></li><li><a shape="rect" 
href="version-notes-2314.html">Version Notes 2.3.14</a></li><li><a shape="rect" 
href="version-notes-23120.html">Version Notes 2.3.12.0</a></li><li><a 
shape="rect" href="version-notes-238.html">Version Notes 2.3.8</a></li><li><a 
shape="rect" href="version-notes-237.html">Version Notes 2.3.7</a></li><li><a 
shape="rect" href="version-notes-2341.html">Version Notes 
2.3.4.1</a></li><li><a shape="rect" href="version-notes-234.html">Version Notes 
2.3.4</a></li><li><a shape="rect" href="versi
 on-notes-233.html">Version Notes 2.3.3</a></li><li><a shape="rect" 
href="version-notes-2312.html">Version Notes 2.3.1.2</a></li><li><a 
shape="rect" href="version-notes-2311.html">Version Notes 
2.3.1.1</a></li><li><a shape="rect" href="version-notes-231.html">Version Notes 
2.3.1</a></li></ul><h3 id="MigrationGuide-VersionNotes2.2.x">Version Notes 
2.2.x</h3><ul><li><a shape="rect" href="version-notes-2231.html">Version Notes 
2.2.3.1</a></li><li><a shape="rect" href="version-notes-223.html">Version Notes 
2.2.3</a></li><li><a shape="rect" href="version-notes-2211.html">Version Notes 
2.2.1.1</a></li><li><a shape="rect" href="version-notes-221.html">Version Notes 
2.2.1</a></li></ul><h3 id="MigrationGuide-VersionNotes2.1.x">Version Notes 
2.1.x</h3><ul><li><a shape="rect" href="version-notes-2181.html">Version Notes 
2.1.8.1</a></li><li><a shape="rect" href="version-notes-218.html">Version Notes 
2.1.8</a></li><li><a shape="rect" href="version-notes-216.html">Version Notes 
2.1.6</a></li><li><
 a shape="rect" href="version-notes-215.html">Version Notes 
2.1.5</a></li><li><a shape="rect" href="version-notes-214.html">Version Notes 
2.1.4</a></li><li><a shape="rect" href="version-notes-213.html">Version Notes 
2.1.3</a></li><li><a shape="rect" href="version-notes-212.html">Version Notes 
2.1.2</a></li><li><a shape="rect" href="version-notes-211.html">Version Notes 
2.1.1</a></li><li><a shape="rect" href="version-notes-210.html">Version Notes 
2.1.0</a></li></ul><h3 id="MigrationGuide-ReleaseNotes2.0.x">Release Notes 
2.0.x</h3><ul><li><a shape="rect" href="release-notes-2014.html">Release Notes 
2.0.14</a></li><li><a shape="rect" href="release-notes-2013.html">Release Notes 
2.0.13</a></li><li><a shape="rect" href="release-notes-2012.html">Release Notes 
2.0.12</a></li><li><a shape="rect" href="release-notes-20112.html">Release 
Notes 2.0.11.2</a></li><li><a shape="rect" 
href="release-notes-20111.html">Release Notes 2.0.11.1</a></li><li><a 
shape="rect" href="release-notes-2011.html">Re
 lease Notes 2.0.11</a></li><li><a shape="rect" 
href="release-notes-2010.html">Release Notes 2.0.10</a></li><li><a shape="rect" 
href="release-notes-209.html">Release Notes 2.0.9</a></li><li><a shape="rect" 
href="release-notes-208.html">Release Notes 2.0.8</a></li><li><a shape="rect" 
href="release-notes-207.html">Release Notes 2.0.7</a></li><li><a shape="rect" 
href="release-notes-206.html">Release Notes 2.0.6</a></li><li><a shape="rect" 
href="release-notes-205.html">Release Notes 2.0.5</a></li><li><a shape="rect" 
href="release-notes-204.html">Release Notes 2.0.4</a></li><li><a shape="rect" 
href="release-notes-203.html">Release Notes 2.0.3</a></li><li><a shape="rect" 
href="release-notes-202.html">Release Notes 2.0.2</a></li><li><a shape="rect" 
href="release-notes-201.html">Release Notes 2.0.1</a></li><li><a shape="rect" 
href="release-notes-200.html">Release Notes 2.0.0</a></li></ul><h3 
id="MigrationGuide-Struts2.3toStruts2.5">Struts 2.3 to Struts 2.5</h3><div 
class="table-wrap"><table 
 class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" 
href="struts-23-to-25-migration.html">Struts 2.3 to 2.5 
migration</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd">Migration guide.</td></tr></tbody></table></div><h3 
id="MigrationGuide-Struts1toStruts2">Struts 1 to Struts 2</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p><a shape="rect" 
href="comparing-struts-1-and-2.html">Comparing Struts 1 and 2</a></p></th><td 
colspan="1" rowspan="1" class="confluenceTd"><p>How are Struts 1 and Struts 2 
alike? How are they different?</p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" href="struts-1-solutions.html">Struts 1 
Solutions</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Various issues (and hopefully their solutions!) 
encountered during migrations to Struts 2.</p></td></tr><tr><th colspan="1" 
rowspan="
 1" class="confluenceTh"><p><a shape="rect" 
href="migration-strategies.html">Migration Strategies</a></p></th><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Steps and overall strategies 
for migrating Struts 1 applications to Struts 2.</p></td></tr><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" 
href="migration-tools.html">Migration Tools</a></p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Development tools to help aid the migration 
process.</p></td></tr></tbody></table></div><h4 
id="MigrationGuide-Tutorials">Tutorials</h4><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" class="external-link" 
href="http://www.infoq.com/news/migrating-struts2"; rel="nofollow">Migrating 
Applications to Struts 2 </a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>A three-part series by Ian Roughley (Sep 
2006)</p></td></tr></tbody></table></div><h4 id="MigrationGuide-Ro
 admap">Roadmap</h4><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" class="external-link" 
href="http://struts.apache.org/roadmap.html#new";>Roadmap FAQ</a></p></th><td 
colspan="1" rowspan="1" class="confluenceTd"><p>What's in store for Struts 
2?</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a 
shape="rect" class="external-link" 
href="http://www.oreillynet.com/onjava/blog/2006/10/my_history_of_struts_2.html";
 rel="nofollow">A History of Struts 2</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Don Brown's summary of 
events</p></td></tr></tbody></table></div><h3 
id="MigrationGuide-Webwork2.2toStruts2">Webwork 2.2 to Struts 2</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p><a shape="rect" 
href="key-changes-from-webwork-2.html">Key Changes From WebWork 
2</a></p></th><td colspan="1" rowspan="1" c
 lass="confluenceTd"><p>What has been removed or changed from WebWork 2.2 to 
Struts 2</p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" 
href="webwork-2-migration-strategies.html">WebWork 2 Migration 
Strategies</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Steps and overall strategies for migrating WebWork 2 
applications to Struts 2.</p></td></tr></tbody></table></div><h2 
id="MigrationGuide-FAQs">FAQs</h2><ul><li><a shape="rect" 
href="where-do-we-get-the-latest-version-the-framework.html">Where do we get 
the latest version the framework</a>?</li><li><a shape="rect" 
href="what-are-some-of-the-frameworks-best-features.html">What are some of the 
framework's best features</a>?</li><li><a shape="rect" 
href="what-is-the-actioncontext.html">What is the 
ActionContext?</a></li></ul><h2 id="MigrationGuide-Next:">Next: <a shape="rect" 
href="contributors-guide.html">Contributors Guide</a></h2></div>
         </div>
 
                     <div class="tabletitle">
@@ -140,6 +140,9 @@ under the License.
                     <span class="smalltext">(Apache Struts 2 
Documentation)</span>
                     <br>
                                     $page.link($child)
+                    <span class="smalltext">(Apache Struts 2 
Documentation)</span>
+                    <br>
+                                    $page.link($child)
                     <span class="smalltext">(Apache Struts 2 
Documentation)</span>
                     <br>
                                     $page.link($child)

Modified: websites/production/struts/content/docs/security.html
==============================================================================
--- websites/production/struts/content/docs/security.html (original)
+++ websites/production/struts/content/docs/security.html Fri Feb  3 13:47:41 
2017
@@ -139,11 +139,11 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1480662013471 {padding: 0px;}
-div.rbtoc1480662013471 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1480662013471 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1486129599528 {padding: 0px;}
+div.rbtoc1486129599528 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1486129599528 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1480662013471">
+/*]]>*/</style></p><div class="toc-macro rbtoc1486129599528">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Security-Securitytips">Security tips</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Security-RestrictaccesstotheConfigBrowser">Restrict access to the Config 
Browser</a></li><li><a shape="rect" 
href="#Security-Don'tmixdifferentaccesslevelsinthesamenamespace">Don't mix 
different access levels in the same namespace</a></li><li><a shape="rect" 
href="#Security-NeverexposeJSPfilesdirectly">Never expose JSP files 
directly</a></li><li><a shape="rect" href="#Security-DisabledevMode">Disable 
devMode</a></li><li><a shape="rect" href="#Security-Reducelogginglevel">Reduce 
logging level</a></li><li><a shape="rect" href="#Security-UseUTF-8encoding">Use 
UTF-8 encoding</a></li><li><a shape="rect" 
href="#Security-Donotdefinedsetterswhennotneeded">Do not defined setters when 
not needed</a></li><li><a shape="rect" 
href="#Security-Donotuseincomingvaluesasaninputforlocalisationlogic">Do not use 
incoming values as an input for localisation logic</a></li></ul>
 </li><li><a shape="rect" href="#Security-Internalsecuritymechanism">Internal 
security mechanism</a>
@@ -177,7 +177,7 @@ div.rbtoc1480662013471 li {margin-left:
     &lt;description&gt;Don't assign users to this role&lt;/description&gt;
     &lt;role-name&gt;no-users&lt;/role-name&gt;
 &lt;/security-role&gt;</pre>
-</div></div><p>The best approach is to used the both solutions.</p><h4 
id="Security-DisabledevMode">Disable devMode</h4><p>The&#160;<code 
style="line-height: 1.4285715;">devMode</code> is a very useful option during 
development time, allowing for deep introspection and debugging into you 
app.</p><p>However, in production it exposes your application to be presenting 
too many informations on application's internals or to evaluating risky 
parameter expressions.</p><div class="confluence-information-macro 
confluence-information-macro-note"><p class="title">How to disable devMode in 
production</p><span class="aui-icon aui-icon-small aui-iconfont-warning 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Please <strong>always 
disable&#160;<code>devMode</code></strong>&#160;before deploying your 
application to a production environment. While it is disabled by default, your 
struts.xml might include a line setting it to true. The best way is to ensure
  the following setting is applied to our struts.xml for production 
deployment:</p><pre><span>&lt;</span><span style="color: 
rgb(0,0,128);">constant </span><span style="color: 
rgb(0,0,255);">name</span><span style="color: rgb(0,128,0);">="struts.devMode" 
</span><span style="color: rgb(0,0,255);">value</span><span style="color: 
rgb(0,128,0);">="false"</span><span>/&gt;</span></pre></div></div><h4 
id="Security-Reducelogginglevel">Reduce logging level</h4><p>It's a good 
practice to reduce logging level from <strong>DEBUG</strong> to 
<strong>INFO</strong> or less. Framework's classes can produce a lot of logging 
entries which will pollute the log file. You can even set logging level to 
<strong>WARN</strong> for classes that belongs to the framework, see example 
Log4j2 configuration:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div><p>The best approach is to used the both solutions.</p><h4 
id="Security-DisabledevMode">Disable devMode</h4><p>The&#160;<code 
style="line-height: 1.4285715;">devMode</code> is a very useful option during 
development time, allowing for deep introspection and debugging into you 
app.</p><p>However, in production it exposes your application to be presenting 
too many informations on application's internals or to evaluating risky 
parameter expressions.&#160;Please&#160;<strong>always 
disable&#160;<code>devMode</code></strong>&#160;before deploying your 
application to a production environment. While it is disabled by default, your 
<code>struts.xml</code>&#160;might include a line setting it to 
<code>true</code>. The best way is to ensure the following setting is applied 
to our <code>struts.xml</code>&#160;for production deployment:</p><div 
class="confluence-information-macro confluence-information-macro-note"><p 
class="title">How to disable devMode in production</p><span class=
 "aui-icon aui-icon-small aui-iconfont-warning 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p><span>&lt;</span><span 
style="color: rgb(0,0,128);">constant </span><span style="color: 
rgb(0,0,255);">name</span><span style="color: rgb(0,128,0);">="struts.devMode" 
</span><span style="color: rgb(0,0,255);">value</span><span style="color: 
rgb(0,128,0);">="false"</span><span>/&gt;</span></p></div></div><h4 
id="Security-Reducelogginglevel">Reduce logging level</h4><p>It's a good 
practice to reduce logging level from <strong>DEBUG</strong> to 
<strong>INFO</strong> or less. Framework's classes can produce a lot of logging 
entries which will pollute the log file. You can even set logging level to 
<strong>WARN</strong> for classes that belongs to the framework, see example 
Log4j2 configuration:</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;?xml version="1.0" encoding="UTF-8"?&gt;
 &lt;Configuration&gt;
     &lt;Appenders&gt;

Added: websites/production/struts/content/docs/version-notes-2510.html
==============================================================================
--- websites/production/struts/content/docs/version-notes-2510.html (added)
+++ websites/production/struts/content/docs/version-notes-2510.html Fri Feb  3 
13:47:41 2017
@@ -0,0 +1,168 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- 
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License. 
+-->
+<html>
+<head>
+    <link type="text/css" rel="stylesheet" 
href="https://struts.apache.org/css/default.css";>
+    <style type="text/css">
+        .dp-highlighter {
+            width:95% !important;
+        }
+    </style>
+    <style type="text/css">
+        .footer {
+            background-image:      
url('https://cwiki.apache.org/confluence/images/border/border_bottom.gif');
+            background-repeat:     repeat-x;
+            background-position:   left top;
+            padding-top:           4px;
+            color:                 #666;
+        }
+    </style>
+    <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
+    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
+    <script src='https://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' 
type='text/javascript'></script>
+    <script type="text/javascript">
+        SyntaxHighlighter.defaults['toolbar'] = false;
+        SyntaxHighlighter.all();
+    </script>
+    <script type="text/javascript" language="javascript">
+        var hide = null;
+        var show = null;
+        var children = null;
+
+        function init() {
+            /* Search form initialization */
+            var form = document.forms['search'];
+            if (form != null) {
+                form.elements['domains'].value = location.hostname;
+                form.elements['sitesearch'].value = location.hostname;
+            }
+
+            /* Children initialization */
+            hide = document.getElementById('hide');
+            show = document.getElementById('show');
+            children = document.all != null ?
+                    document.all['children'] :
+                    document.getElementById('children');
+            if (children != null) {
+                children.style.display = 'none';
+                show.style.display = 'inline';
+                hide.style.display = 'none';
+            }
+        }
+
+        function showChildren() {
+            children.style.display = 'block';
+            show.style.display = 'none';
+            hide.style.display = 'inline';
+        }
+
+        function hideChildren() {
+            children.style.display = 'none';
+            show.style.display = 'inline';
+            hide.style.display = 'none';
+        }
+    </script>
+    <title>Version Notes 2.5.10</title>
+</head>
+<body onload="init()">
+<table border="0" cellpadding="2" cellspacing="0" width="100%">
+    <tr class="topBar">
+        <td align="left" valign="middle" class="topBarDiv" align="left" nowrap>
+            &nbsp;<a href="home.html">Home</a>&nbsp;&gt;&nbsp;<a 
href="guides.html">Guides</a>&nbsp;&gt;&nbsp;<a 
href="migration-guide.html">Migration Guide</a>&nbsp;&gt;&nbsp;<a 
href="version-notes-2510.html">Version Notes 2.5.10</a>
+        </td>
+        <td align="right" valign="middle" nowrap>
+            <form name="search" action="https://www.google.com/search"; 
method="get">
+                <input type="hidden" name="ie" value="UTF-8" />
+                <input type="hidden" name="oe" value="UTF-8" />
+                <input type="hidden" name="domains" value="" />
+                <input type="hidden" name="sitesearch" value="" />
+                <input type="text" name="q" maxlength="255" value="" />
+                <input type="submit" name="btnG" value="Google Search" />
+            </form>
+        </td>
+    </tr>
+</table>
+
+<div id="PageContent">
+    <div class="pageheader" style="padding: 6px 0px 0px 0px;">
+        <!-- We'll enable this once we figure out how to access (and save) the 
logo resource -->
+        <!--img src="/wiki/images/confluence_logo.gif" style="float: left; 
margin: 4px 4px 4px 10px;" border="0"-->
+        <div style="margin: 0px 10px 0px 10px" class="smalltext">Apache Struts 
2 Documentation</div>
+        <div style="margin: 0px 10px 8px 10px"  class="pagetitle">Version 
Notes 2.5.10</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=67638791";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/notep_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Edit Page"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=67638791";>Edit
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/browse_space.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Browse Space"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW";>Browse 
Space</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=67638791";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/add_page_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Add Page"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=67638791";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=67638791";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Add News"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=67638791";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><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)"> These are the notes for the Struts 
2.5.10 distribution.</p><p><img class="emoticon emoticon-tick" 
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png";
 data-emoticon-name="tick" alt="(tick)"> For prior notes in this release 
series, see <a shape="rect" href="version-notes-258.html">Version Notes 
2.5.8</a></p><ul><li>If you are a Maven user, you might want to get started 
using the <a shape="rect" href="struts-2-maven-archetypes.html">Maven 
Archetype</a>.</li></ul><div class="code panel pdl" style="border-width: 
1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;"><b>Maven Dependency</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.struts&lt;/groupId&gt;
+  &lt;artifactId&gt;struts2-core&lt;/artifactId&gt;
+  &lt;version&gt;2.5.10&lt;/version&gt;
+&lt;/dependency&gt;
+</pre>
+</div></div><p>You can also use Struts Archetype Catalog like below</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts Archetype 
Catalog</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: text; gutter: false; theme: Default" 
style="font-size:12px;">mvn archetype:generate 
-DarchetypeCatalog=http://struts.apache.org/</pre>
+</div></div><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Staging 
Repository</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;repositories&gt;
+  &lt;repository&gt;
+    &lt;id&gt;apache.nexus&lt;/id&gt;
+    &lt;name&gt;ASF Nexus Staging&lt;/name&gt;
+    
&lt;url&gt;https://repository.apache.org/content/groups/staging/&lt;/url&gt;
+  &lt;/repository&gt;
+&lt;/repositories&gt;</pre>
+</div></div><h2 id="VersionNotes2.5.10-InternalChanges">Internal 
Changes</h2><h3 id="VersionNotes2.5.10-Bug">Bug</h3><ul><li>[<a shape="rect" 
class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4693";>WW-4693</a>] - How to 
handle 404 when using wildcard instead of error 500 when the wildcard method 
doesn't exist</li><li>[<a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4725";>WW-4725</a>] - 
MessageStoreInterceptor must handle all redirects</li><li>[<a shape="rect" 
class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4726";>WW-4726</a>] - 
MaxMultiPartUpload limited to 2GB (Long --&gt; Integer)</li><li>[<a 
shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4727";>WW-4727</a>] - Struts 
2.5.8 no longer supports the &lt;include&gt; directive in the 
struts.xml</li><li>[<a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4728";>WW-4728</a>] - 
JSONValidationInterce
 ptor change static parameters names</li><li>[<a shape="rect" 
class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4729";>WW-4729</a>] - 
ServletDispatcherResult can't handle parameters anymore</li><li>[<a 
shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4730";>WW-4730</a>] - 
TokenInterceptor synchronized on session.getId().intern()</li><li>[<a 
shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4731";>WW-4731</a>] - XSLT error 
during transformation</li><li>[<a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4733";>WW-4733</a>] - No default 
parameter defined for result [json] of type 
[org.apache.struts2.json.JSONResult]</li><li>[<a shape="rect" 
class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4734";>WW-4734</a>] - 
I18Interceptor ignores session or cookie Locale after first lookup 
failure</li><li>[<a shape="rect" class="external-link" href="https://issues.apac
 he.org/jira/browse/WW-4735">WW-4735</a>] - EmailValidator does not accept new 
domain suffixes</li></ul><h3 
id="VersionNotes2.5.10-Improvement">Improvement</h3><ul><li>[<a shape="rect" 
class="external-link" 
href="https://issues.apache.org/jira/browse/WW-3961";>WW-3961</a>] - struts.xml 
include not loading in dependant jar files</li><li>[<a shape="rect" 
class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4050";>WW-4050</a>] - 
AnnotationValidationInterceptor should consult UnknownHandler before throwing 
NoSuchMethodException</li><li>[<a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4102";>WW-4102</a>] - 
ActionSupport.LOG should be private</li><li>[<a shape="rect" 
class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4159";>WW-4159</a>] - Remove 
StrutsObjectFactory and define StrutsInterceptorFactory instead</li><li>[<a 
shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4174";>WW-4174</a>] - Ma
 ke OgnlValueStack and OgnlValueStackFactory More Extensible</li><li>[<a 
shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4687";>WW-4687</a>] - Make 
interceptor parameters dynamic</li></ul><h3 
id="VersionNotes2.5.10-NewFeature">New Feature</h3><p>&#160;</p><ul><li>[<a 
shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-3787";>WW-3787</a>] - allow 
include other config files from classpath</li></ul><h2 
id="VersionNotes2.5.10-IssueDetail">Issue Detail</h2><ul><li><a shape="rect" 
class="external-link" 
href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311041&amp;version=12339162";>JIRA
 Release Notes 2.5.10</a></li></ul><h2 id="VersionNotes2.5.10-IssueList">Issue 
List</h2><ul><li><a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/issues/?filter=12339470";>Struts 2.5.10 
DONE</a></li><li><a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/issues/?filter=12335667";>S
 truts 2.5.x TODO</a></li></ul><h2 id="VersionNotes2.5.10-Otherresources">Other 
resources</h2><ul><li><a shape="rect" class="external-link" 
href="http://www.mail-archive.com/commits%40struts.apache.org/"; 
rel="nofollow">Commit Logs</a></li><li><a shape="rect" class="external-link" 
href="https://git-wip-us.apache.org/repos/asf?p=struts.git;a=tree;h=refs/heads/develop;hb=develop";>Source
 Code Repository</a></li></ul><div><span style="font-size: 24.0px;line-height: 
30.0px;"><br clear="none"></span></div><div><span style="font-size: 
24.0px;line-height: 30.0px;background-color: rgb(245,245,245);"><br 
clear="none"></span></div></div>
+        </div>
+
+        
+    </div>
+</div>
+<div class="footer">
+    Generated by CXF SiteExporter
+</div>
+</body>
+</html>

Modified: websites/production/struts/content/docs/xsl-result.html
==============================================================================
--- websites/production/struts/content/docs/xsl-result.html (original)
+++ websites/production/struts/content/docs/xsl-result.html Fri Feb  3 13:47:41 
2017
@@ -138,131 +138,50 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent">
-
-<p>XSLTResult uses XSLT to transform an action object to XML. The recent 
version
-has been specifically modified to deal with Xalan flaws. When using Xalan you
-may notice that even though you have a very minimal stylesheet like this one
-</p><pre>
-&lt;xsl:template match="/result"&gt;
-  &lt;result/&gt;
+            <div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/
+div.rbtoc1484828432579 {padding: 0px;}
+div.rbtoc1484828432579 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1484828432579 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1484828432579">
+<ul class="toc-indentation"><li><a shape="rect" 
href="#XSLResult-Description">Description</a></li><li><a shape="rect" 
href="#XSLResult-Parameters">Parameters</a></li><li><a shape="rect" 
href="#XSLResult-Examples">Examples</a></li></ul>
+</div><h1 id="XSLResult-Description">Description</h1><p>XSLTResult uses XSLT 
to transform an action object to XML. The recent version has been specifically 
modified to deal with Xalan flaws. When using Xalan you may notice that even 
though you have a very minimal stylesheet like this one</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;xsl:template match="/result"&gt;
+&lt;result/&gt;
 &lt;/xsl:template&gt;</pre>
-
-<p></p><p>
-Xalan would still iterate through every property of your action and all
-its descendants.
-</p>
-
-<p></p><p>
-If you had double-linked objects, Xalan would work forever analysing an
-infinite object tree. Even if your stylesheet was not constructed to process
-them all. It's because the current Xalan eagerly and extensively converts
-everything to its internal DTM model before further processing.
-</p>
-
-<p></p><p>
-That's why there's a loop eliminator added that works by indexing every
-object-property combination during processing. If it notices that some
-object's property was already walked through, it doesn't go any deeper.
-Say you have two objects, x and y, with the following properties set
-(pseudocode):
-</p>
-<pre>
-x.y = y;
+</div></div><p>Xalan would still iterate through every property of your action 
and all its descendants.</p><p>If you had double-linked objects, Xalan would 
work forever analysing an infinite object tree. Even if your stylesheet was not 
constructed to process them all. It's because the current Xalan eagerly and 
extensively converts<br clear="none">everything to its internal DTM model 
before further processing.</p><p>That's why there's a loop eliminator added 
that works by indexing every object-property combination during processing. If 
it notices that some object's property was already walked through, it doesn't 
go any deeper. Say you have two objects, x and y, with the following properties 
set (pseudocode):</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;">x.y = y;
 and
 y.x = x;
 action.x=x;</pre>
-
-<p></p><p>
-Due to that modification, the resulting XML document based on x would be:
-</p>
-
-<p></p><pre>
-&lt;result&gt;
-  &lt;x&gt;
-    &lt;y/&gt;
-  &lt;/x&gt;
+</div></div><p>Due to that modification, the resulting XML document based on x 
would be:</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;result&gt;
+&lt;x&gt;
+&lt;y/&gt;
+&lt;/x&gt;
 &lt;/result&gt;</pre>
-
-<p></p><p>
-Without it there would be endless x/y/x/y/x/y/... elements.
-</p>
-
-<p></p><p>
-The XSLTResult code tries also to deal with the fact that DTM model is built
-in a manner that children are processed before siblings. The result is that if
-there is object x that is both set in action's x property, and very deeply
-under action's a property then it would only appear under a, not under x.
-That's not what we expect, and that's why XSLTResult allows objects to repeat
-in various places to some extent.
-</p>
-
-<p></p><p>
-Sometimes the object mesh is still very dense and you may notice that even
-though you have a relatively simple stylesheet, execution takes a tremendous
-amount of time. To help you to deal with that obstacle of Xalan, you may
-attach regexp filters to elements paths (xpath).
-</p>
-
-<p></p><p>
-<b>Note:</b> In your .xsl file the root match must be named <tt>result</tt>.
-<br clear="none">This example will output the username by using 
<tt>getUsername</tt> on your
-action class:
-</p><pre>
-&lt;xsl:template match="result"&gt;
-  &lt;html&gt;
-  &lt;body&gt;
+</div></div><p>Without it there would be endless 
<code>x/y/x/y/x/y/...</code>&#160;elements.</p><p>The 
<code>XSLTResult</code>&#160;code tries also to deal with the fact that DTM 
model is built in a manner that children are processed before siblings. The 
result is that if there is object x that is both set in action's x property, 
and very deeply under action's a property then it would only appear under a, 
not under x. That's not what we expect, and that's why 
<code>XSLTResult</code>&#160;allows objects to repeat in various places to some 
extent.</p><p>Sometimes the object mesh is still very dense and you may notice 
that even though you have a relatively simple stylesheet, execution takes a 
tremendous amount of time. To help you to deal with that obstacle of Xalan, you 
may attach regexp filters to elements paths (xpath).</p><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>In your .xsl 
file the root match must be named <strong>result</strong>. This example will 
output the username by using <strong>getUsername</strong> on your action 
class:</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;xsl:template match="result"&gt;
+&lt;html&gt;
+&lt;body&gt;
   Hello &lt;xsl:value-of select="username"/&gt; how are you?
-  &lt;/body&gt;
-  &lt;/html&gt;
-&lt;/xsl:template&gt;
-</pre>
-
-<p></p><p>
-In the following example the XSLT result would only walk through action's
-properties without their childs. It would also skip every property that has
-"hugeCollection" in their name. Element's path is first compared to
-excludingPattern - if it matches it's no longer processed. Then it is
-compared to matchingPattern and processed only if there's a match.
-</p>
-
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-&lt;result name=&quot;success&quot; type=&quot;xslt&quot;&gt;
-  &lt;param name=&quot;location&quot;&gt;foo.xslt&lt;/param&gt;
-  &lt;param name=&quot;matchingPattern&quot;&gt;^/result/[^/*]$&lt;/param&gt;
-  &lt;param 
name=&quot;excludingPattern&quot;&gt;.*(hugeCollection).*&lt;/param&gt;
-&lt;/result&gt;
-]]></script>
-</div></div>
-
-<h1 id="XSLResult-Parameters">Parameters</h1>
-
-
-<p></p><ul></ul><p></p><ul><li><b>location (default)</b> - the location to go 
to after execution.</li><li><b>encoding</b> - character encoding used in XML, 
default UTF-8.</li></ul><p></p><ul><li><b>parse</b> - true by default. If set 
to false, the location param will
-not be parsed for Ognl expressions.</li></ul><p></p>
-
-<p></p>
-
-<p></p><p>
-<code>struts.properties</code> related configuration:
-</p>
-<ul></ul><p></p><ul><li><b>struts.xslt.nocache</b> - Defaults to false. If set 
to true, disables
-stylesheet caching. Good for development, bad for production.</li></ul><p></p>
-
-
-<h1 id="XSLResult-Examples">Examples</h1>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-&lt;result name=&quot;success&quot; type=&quot;xslt&quot;&gt;
-  &lt;param name=&quot;location&quot;&gt;foo.xslt&lt;/param&gt;
-  &lt;param name=&quot;matchingPattern&quot;&gt;^/result/[^/*]$&lt;/param&gt;
-  &lt;param 
name=&quot;excludingPattern&quot;&gt;.*(hugeCollection).*&lt;/param&gt;
-&lt;/result&gt;
-]]></script>
-</div></div></div>
+&lt;/body&gt;
+&lt;/html&gt;
+&lt;/xsl:template&gt;</pre>
+</div></div></div></div><p>In the following example the XSLT result would only 
walk through action's properties without their childs. It would also skip every 
property that has <code>hugeCollection</code>&#160;in their name. Element's 
path is first compared to <code>excludingPattern</code>&#160;- if it matches 
it's no longer processed. Then it is compared to 
<code>matchingPattern</code>&#160;and processed only if there's a 
match.</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;result name="success" type="xslt"&gt;
+  &lt;param name="stylesheetLocation"&gt;foo.xslt&lt;/param&gt;
+  &lt;param name="matchingPattern"&gt;^/result/[^/*]$&lt;/param&gt;
+  &lt;param name="excludingPattern"&gt;.*(hugeCollection).*&lt;/param&gt;
+&lt;/result&gt;</pre>
+</div></div><p>In the following example the XSLT result would use the action's 
user property instead of the action as it's base document and walk through it's 
properties. The <code>exposedValue</code>&#160;uses an OGNL expression to 
derive it's value.</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;result name="success" type="xslt"&gt;
+  &lt;param name="stylesheetLocation"&gt;foo.xslt&lt;/param&gt;
+  &lt;param name="exposedValue"&gt;${user}&lt;/param&gt;
+&lt;/result&gt;</pre>
+</div></div><h1 id="XSLResult-Parameters">Parameters</h1><p>This result type 
takes the following parameters:</p><ul style="list-style-type: 
square;"><li><strong>stylesheetLocation</strong> (default) - the location to go 
to after execution.</li><li><strong>location</strong> (deprecated) - the same 
as <strong>stylesheetLocation</strong> but it was dropped since Struts 
2.5.</li><li><strong>encoding&#160;</strong>- character encoding used in XML, 
default UTF-8.</li><li><strong>parse</strong>&#160;- <code>true</code>&#160;by 
default. If set to false, the location param will not be parsed for Ognl 
expressions.</li><li><strong>matchingPattern&#160;</strong>- 
<code>Pattern</code>&#160;that matches only desired elements, by default it 
matches everything.</li><li><strong>excludingPattern</strong>&#160;- 
<code>Pattern</code>&#160;that eliminates unwanted elements, by default it 
matches none.</li></ul><p><code>struts.properties</code>&#160;related 
configuration:</p><ul style="list-style-type: s
 quare;"><li><strong>struts.xslt.nocache</strong>&#160;- Defaults to false. If 
set to true, disables stylesheet caching. Good for development, bad for 
production.</li></ul><h1 id="XSLResult-Examples"><span style="font-size: 
24.0px;">Examples</span></h1><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;result name="success" 
type="xslt"&gt;foo.xslt&lt;/result&gt;</pre>
+</div></div><p>&#160;</p><p>&#160;</p></div>
         </div>
 
         

Modified: websites/production/struts/content/download.html
==============================================================================
--- websites/production/struts/content/download.html (original)
+++ websites/production/struts/content/download.html Fri Feb  3 13:47:41 2017
@@ -177,27 +177,27 @@
 <h1>Full Releases</h1>
 <a class="anchor" name="struts-ga"></a>
 
-<a class="anchor" name="struts258"></a>
-<h2>Struts 2.5.8</h2>
+<a class="anchor" name="struts2510"></a>
+<h2>Struts 2.5.10</h2>
 
 <p>
-  <a href="http://struts.apache.org/";>Apache Struts 2.5.8</a> is an elegant, 
extensible
+  <a href="http://struts.apache.org/";>Apache Struts 2.5.10</a> is an elegant, 
extensible
   framework for creating enterprise-ready Java web applications. It is 
available in a full distribution,
   or as separate library, source, example and documentation distributions.
-  Struts 2.5.8 is the "best available" version of Struts in the 2.5 series.
+  Struts 2.5.10 is the "best available" version of Struts in the 2.5 series.
 </p>
 
 <ul>
   <li>
-    <a href="http://struts.apache.org/docs/version-notes-258.html";>Version 
Notes</a>
+    <a href="http://struts.apache.org/docs/version-notes-2510.html";>Version 
Notes</a>
   </li>
 
   <li>Full Distribution:
     <ul>
       <li>
-        <a 
href="[preferred]struts/2.5.8/struts-2.5.8-all.zip">struts-2.5.8-all.zip</a> 
(65MB)
-        [<a 
href="http://www.apache.org/dist/struts/2.5.8/struts-2.5.8-all.zip.asc";>PGP</a>]
-        [<a 
href="http://www.apache.org/dist/struts/2.5.8/struts-2.5.8-all.zip.md5";>MD5</a>]
+        <a 
href="[preferred]struts/2.5.10/struts-2.5.10-all.zip">struts-2.5.10-all.zip</a> 
(65MB)
+        [<a 
href="http://www.apache.org/dist/struts/2.5.10/struts-2.5.10-all.zip.asc";>PGP</a>]
+        [<a 
href="http://www.apache.org/dist/struts/2.5.10/struts-2.5.10-all.zip.md5";>MD5</a>]
       </li>
     </ul>
   </li>
@@ -205,9 +205,9 @@
   <li>Example Applications:
     <ul>
       <li>
-        <a 
href="[preferred]struts/2.5.8/struts-2.5.8-apps.zip">struts-2.5.8-apps.zip</a> 
(35MB)
-        [<a 
href="http://www.apache.org/dist/struts/2.5.8/struts-2.5.8-apps.zip.asc";>PGP</a>]
-        [<a 
href="http://www.apache.org/dist/struts/2.5.8/struts-2.5.8-apps.zip.md5";>MD5</a>]
+        <a 
href="[preferred]struts/2.5.10/struts-2.5.10-apps.zip">struts-2.5.10-apps.zip</a>
 (35MB)
+        [<a 
href="http://www.apache.org/dist/struts/2.5.10/struts-2.5.10-apps.zip.asc";>PGP</a>]
+        [<a 
href="http://www.apache.org/dist/struts/2.5.10/struts-2.5.10-apps.zip.md5";>MD5</a>]
       </li>
     </ul>
   </li>
@@ -215,9 +215,9 @@
   <li>Essential Dependencies Only:
     <ul>
       <li>
-        <a 
href="[preferred]struts/2.5.8/struts-2.5.8-min-lib.zip">struts-2.5.8-min-lib.zip</a>
 (4MB)
-        [<a 
href="http://www.apache.org/dist/struts/2.5.8/struts-2.5.8-min-lib.zip.asc";>PGP</a>]
-        [<a 
href="http://www.apache.org/dist/struts/2.5.8/struts-2.5.8-min-lib.zip.md5";>MD5</a>]
+        <a 
href="[preferred]struts/2.5.10/struts-2.5.10-min-lib.zip">struts-2.5.10-min-lib.zip</a>
 (4MB)
+        [<a 
href="http://www.apache.org/dist/struts/2.5.10/struts-2.5.10-min-lib.zip.asc";>PGP</a>]
+        [<a 
href="http://www.apache.org/dist/struts/2.5.10/struts-2.5.10-min-lib.zip.md5";>MD5</a>]
       </li>
     </ul>
   </li>
@@ -225,9 +225,9 @@
   <li>All Dependencies:
     <ul>
       <li>
-        <a 
href="[preferred]struts/2.5.8/struts-2.5.8-lib.zip">struts-2.5.8-lib.zip</a> 
(19MB)
-        [<a 
href="http://www.apache.org/dist/struts/2.5.8/struts-2.5.8-lib.zip.asc";>PGP</a>]
-        [<a 
href="http://www.apache.org/dist/struts/2.5.8/struts-2.5.8-lib.zip.md5";>MD5</a>]
+        <a 
href="[preferred]struts/2.5.10/struts-2.5.10-lib.zip">struts-2.5.10-lib.zip</a> 
(19MB)
+        [<a 
href="http://www.apache.org/dist/struts/2.5.10/struts-2.5.10-lib.zip.asc";>PGP</a>]
+        [<a 
href="http://www.apache.org/dist/struts/2.5.10/struts-2.5.10-lib.zip.md5";>MD5</a>]
       </li>
     </ul>
   </li>
@@ -235,9 +235,9 @@
   <li>Documentation:
     <ul>
       <li>
-        <a 
href="[preferred]struts/2.5.8/struts-2.5.8-docs.zip">struts-2.5.8-docs.zip</a> 
(13MB)
-        [<a 
href="http://www.apache.org/dist/struts/2.5.8/struts-2.5.8-docs.zip.asc";>PGP</a>]
-        [<a 
href="http://www.apache.org/dist/struts/2.5.8/struts-2.5.8-docs.zip.md5";>MD5</a>]
+        <a 
href="[preferred]struts/2.5.10/struts-2.5.10-docs.zip">struts-2.5.10-docs.zip</a>
 (13MB)
+        [<a 
href="http://www.apache.org/dist/struts/2.5.10/struts-2.5.10-docs.zip.asc";>PGP</a>]
+        [<a 
href="http://www.apache.org/dist/struts/2.5.10/struts-2.5.10-docs.zip.md5";>MD5</a>]
       </li>
     </ul>
   </li>
@@ -245,9 +245,9 @@
   <li>Source:
     <ul>
       <li>
-        <a 
href="[preferred]struts/2.5.8/struts-2.5.8-src.zip">struts-2.5.8-src.zip</a> 
(7MB)
-        [<a 
href="http://www.apache.org/dist/struts/2.5.8/struts-2.5.8-src.zip.asc";>PGP</a>]
-        [<a 
href="http://www.apache.org/dist/struts/2.5.8/struts-2.5.8-src.zip.md5";>MD5</a>]
+        <a 
href="[preferred]struts/2.5.10/struts-2.5.10-src.zip">struts-2.5.10-src.zip</a> 
(7MB)
+        [<a 
href="http://www.apache.org/dist/struts/2.5.10/struts-2.5.10-src.zip.asc";>PGP</a>]
+        [<a 
href="http://www.apache.org/dist/struts/2.5.10/struts-2.5.10-src.zip.md5";>MD5</a>]
       </li>
     </ul>
   </li>
@@ -350,8 +350,8 @@
     <ul>
       <li>
         <a 
href="[preferred]struts/2.5-BETA3/struts-2.5-BETA3-all.zip">struts-2.5-BETA3-all.zip</a>
 (65MB)
-        [<a 
href="http://www.apache.org/dist/struts/2.5.8/struts-2.5-BETA3-all.zip.asc";>PGP</a>]
-        [<a 
href="http://www.apache.org/dist/struts/2.5.8/struts-2.5-BETA3-all.zip.md5";>MD5</a>]
+        [<a 
href="http://www.apache.org/dist/struts/2.5.10/struts-2.5-BETA3-all.zip.asc";>PGP</a>]
+        [<a 
href="http://www.apache.org/dist/struts/2.5.10/struts-2.5-BETA3-all.zip.md5";>MD5</a>]
       </li>
     </ul>
   </li>

Modified: websites/production/struts/content/downloads.html
==============================================================================
--- websites/production/struts/content/downloads.html (original)
+++ websites/production/struts/content/downloads.html Fri Feb  3 13:47:41 2017
@@ -137,7 +137,7 @@
     <ul>
       <li>
         <a href="http://struts.apache.org/download.cgi#struts-ga";>
-          Struts 2.5.8
+          Struts 2.5.10
         </a> ("best available")
       </li>
     </ul>

Modified: websites/production/struts/content/index.html
==============================================================================
--- websites/production/struts/content/index.html (original)
+++ websites/production/struts/content/index.html Fri Feb  3 13:47:41 2017
@@ -125,7 +125,7 @@
       extensible using a plugin architecture, and ships with plugins to support
       REST, AJAX and JSON.
     </p>
-    <a href="/download.cgi#struts258" class="btn btn-primary btn-large">
+    <a href="/download.cgi#struts2510" class="btn btn-primary btn-large">
       <img src="img/download-icon.svg"> Download
     </a>
     <a href="primer.html" class="btn btn-info btn-large">
@@ -145,12 +145,12 @@
         </p>
       </div>
       <div class="column col-md-4">
-        <h2>Apache Struts 2.5.8 GA</h2>
+        <h2>Apache Struts 2.5.10 GA</h2>
         <p>
-          Apache Struts 2.5.8 GA has been released<br/>on 19 December 2016.
+          Apache Struts 2.5.10 GA has been released<br/>on 3 February 2017.
         </p>
-        Read more in <a href="announce.html#a20161219">Announcement</a> or in
-        <a href="/docs/version-notes-258.html">Version notes</a>
+        Read more in <a href="announce.html#a20170203">Announcement</a> or in
+        <a href="/docs/version-notes-2510.html">Version notes</a>
       </div>
       <div class="column col-md-4">
         <h2>Apache Struts 2.3.31 GA</h2>


Reply via email to