Author: lukaszlenart Date: Fri Oct 21 11:20:28 2016 New Revision: 999740 Log: Updates production
Modified: websites/production/struts/content/announce.html websites/production/struts/content/archetype-catalog.xml websites/production/struts/content/docs/s2-036.html websites/production/struts/content/download.html websites/production/struts/content/downloads.html websites/production/struts/content/index.html Modified: websites/production/struts/content/announce.html ============================================================================== --- websites/production/struts/content/announce.html (original) +++ websites/production/struts/content/announce.html Fri Oct 21 11:20:28 2016 @@ -124,6 +124,60 @@ Skip to: <a href="announce-2015.html">Announcements - 2015</a> </p> +<h4 id="a20161021">21 October 2016 - Struts 2.5.5 General Availability</h4> + +<p>The Apache Struts group is pleased to announce that Struts 2.5.5 is available as a âGeneral Availabilityâ +release. The GA designation is our highest quality grade.</p> + +<p>Apache Struts 2 is an elegant, extensible framework for creating enterprise-ready Java web applications. +The framework is designed to streamline the full development cycle, from building, to deploying, +to maintaining applications over time.</p> + +<p>This release contains several breaking changes and improvements just to mention few of them:</p> + +<ul> + <li>webconsole can always be accessed, see WW-4601</li> + <li>Space character and includeParams, see WW-4628</li> + <li>Empty <s:param name="p1" value=""></s:param> is being supressed, see WW-4631</li> + <li>remove ASM 3 from struts2, see WW-4646</li> + <li>SMI do not work with JSON plugin, see WW-4649</li> + <li>Concurrency issue in addDefaultResourceBundle, see WW-4652</li> + <li>Action parameters should be included when building the URL to action, see WW-4654</li> + <li>StreamResult closes outputstream early, see WW-4662</li> + <li>NullPointerException when displaying a form without action attribute, see WW-4663</li> + <li>ParametersInterceptor excludeParams only applies to first instance of params interceptor in paramsPrepareParamsStack, see WW-4667</li> + <li>URL validator is case sensitive, see WW-4671</li> + <li>Select box does not pre-select chosen values, see WW-4675</li> + <li>Tiles-Plugin unable to load tiles definition XML, see WW-4679</li> + <li>Missing brackets in checkbox.ftl of css_xhtml template, see WW-4681</li> + <li>Move Struts Archetypes to dedicated project, see WW-4316</li> + <li>Add dedicated class to represent Http Parameters, see WW-4572</li> + <li>ParametersInterceptor should check collection index to against DOS, see WW-4620</li> + <li>Move example portlet-app into struts-examples, see WW-4660</li> + <li>Upgrade JFreeChart plugin to the latest version of JFreeChart, see WW-4670</li> + <li>StrutsPrepareAndExecuteFilter should check for response commited status, see WW-4674</li> + <li>ConversionErrorInterceptor to extend MethodFilterInterceptor, see WW-4676</li> + <li>I18N Interceptor automatically validates Locale, see WW-4677</li> + <li>Upgrade Tiles to 3.0.7 GA version, see WW-4680</li> + <li>Allow directly accessing I18N keys from Tiles defintions, see WW-4685</li> + <li>Merge two existing I18NInterceptors into one, see WW-4686</li> + <li>Exclude âjava.ext.dirsâ when scanning for actions, see WW-4688</li> + <li>CycleDetector - use enum instead of String constants, see WW-4689</li> + <li>Upgrade Commons Collections to 4.1, see WW-4695</li> + <li>Upgrade to Log4j 2.7, see WW-4696</li> + <li>Warn about excluded action/method only when DMI is disabled, see WW-4697</li> +</ul> + +<p><strong>All developers are strongly advised to perform this action.</strong></p> + +<p>The 2.5.x series of the Apache Struts framework has a minimum requirement of the following specification versions: +Servlet API 2.4, JSP API 2.0, and Java 7.</p> + +<p>Should any issues arise with your use of any version of the Struts framework, please post your comments +to the user list, and, if appropriate, file a tracking ticket.</p> + +<p>You can download this version from our <a href="download.cgi#struts-gq">download</a> page.</p> + <h4 id="a20161018">18 October 2016 - Struts 2.3.31 General Availability</h4> <p>The Apache Struts group is pleased to announce that Struts 2.3.31 is available as a âGeneral Availabilityâ Modified: websites/production/struts/content/archetype-catalog.xml ============================================================================== Binary files - no diff available. Modified: websites/production/struts/content/docs/s2-036.html ============================================================================== --- websites/production/struts/content/docs/s2-036.html (original) +++ websites/production/struts/content/docs/s2-036.html Fri Oct 21 11:20:28 2016 @@ -125,7 +125,7 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> - <div id="ConfluenceContent"><h2 id="S2-036-Summary">Summary</h2>Forced double OGNL evaluation, when evaluated on raw user input in tag attributes, may lead to remote code execution (similar to S2-029)<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 Remote Code Execution vulnerability</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>Medium</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Recommendation</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Always validate incoming parameters' values when r e-assigning them to certain Struts' tags attributes.</p><p>Don't use %{...} syntax in tag attributes other than <em>value</em> unless you have a valid use-case.</p><p>Alternatively upgrade to <a shape="rect" href="version-notes-2328.html">Struts 2.3.29</a> or <a shape="rect" href="version-notes-251.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.0.0 - Struts<span style="color: rgb(23,35,59);"> 2.3.28.1</span></p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Reporters</p></th><td colspan="1" rowspan="1" class="confluenceTd"><span class="Apple-tab-span"><span>Alvaro</span> </span>Munoz alvaro dot munoz at hpe.com</td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>CVE Identifier</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p><span style="color: rgb(34,34,34);">CVE-2016-0785</span></p></td></tr></tbody></ta ble></div><h2 id="S2-036-Problem">Problem</h2><p>The same issue was reported in <a shape="rect" href="s2-029.html">S2-029</a> but the proposed solutions were not fully proper. The Apache Struts frameworks when forced, performs double evaluation of attributes' values assigned to certain tags so it is possible to pass in a value that will be evaluated again when a tag's attributes will be rendered.</p><h2 id="S2-036-Solution">Solution</h2><p>Adding a proper validation of each value that's coming in and it's used in tag's attributes.</p><p>Don't use forced evaluation of an attribute other than <em>value</em> using %{...} syntax unless really needed for a valid use-case. </p><p>By <span style="line-height: 1.42857;">upgrading to Struts 2.3.29 or 2.5.1, possible malicious effects of forced double evaluation are limited.</span></p><h2 id="S2-036-Backwardcompatibility">Backward compatibility</h2><p>Some backward incompatibility issues are expected when upgrading to Stru ts 2.3.29 - it can happen that some OGNL expressions stop working because of performing disallowed arithmetic operations and assigments.</p><h2 id="S2-036-Workaround">Workaround</h2><p>Not possible as this fix requires changes in OGNL and how Struts uses OGNL in certain aspects.</p><p> </p></div> + <div id="ConfluenceContent"><h2 id="S2-036-Summary">Summary</h2>Forced double OGNL evaluation, when evaluated on raw user input in tag attributes, may lead to remote code execution (similar to S2-029)<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 Remote Code Execution vulnerability</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>Medium</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Recommendation</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Always validate incoming parameters' values when r e-assigning them to certain Struts' tags attributes.</p><p>Don't use %{...} syntax in tag attributes other than <em>value</em> unless you have a valid use-case.</p><p>Alternatively upgrade to <a shape="rect" href="version-notes-2328.html">Struts 2.3.29</a> or <a shape="rect" href="version-notes-251.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.0.0 - Struts<span style="color: rgb(23,35,59);"> 2.3.28.1</span></p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Reporters</p></th><td colspan="1" rowspan="1" class="confluenceTd"><span class="Apple-tab-span"><span>Alvaro</span> </span>Munoz alvaro dot munoz at hpe.com</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-4461</p></td></tr></tbody></table></div><h2 id="S2-036-Problem">Problem</ h2><p>The same issue was reported in <a shape="rect" href="s2-029.html">S2-029</a> but the proposed solutions were not fully proper. The Apache Struts frameworks when forced, performs double evaluation of attributes' values assigned to certain tags so it is possible to pass in a value that will be evaluated again when a tag's attributes will be rendered.</p><h2 id="S2-036-Solution">Solution</h2><p>Adding a proper validation of each value that's coming in and it's used in tag's attributes.</p><p>Don't use forced evaluation of an attribute other than <em>value</em> using %{...} syntax unless really needed for a valid use-case. </p><p>By <span style="line-height: 1.42857;">upgrading to Struts 2.3.29 or 2.5.1, possible malicious effects of forced double evaluation are limited.</span></p><h2 id="S2-036-Backwardcompatibility">Backward compatibility</h2><p>Some backward incompatibility issues are expected when upgrading to Struts 2.3.29 - it can happen that some OGNL ex pressions stop working because of performing disallowed arithmetic operations and assigments.</p><h2 id="S2-036-Workaround">Workaround</h2><p>Not possible as this fix requires changes in OGNL and how Struts uses OGNL in certain aspects.</p><p> </p></div> </div> Modified: websites/production/struts/content/download.html ============================================================================== --- websites/production/struts/content/download.html (original) +++ websites/production/struts/content/download.html Fri Oct 21 11:20:28 2016 @@ -177,27 +177,27 @@ <h1>Full Releases</h1> <a class="anchor" name="struts-ga"></a> -<a class="anchor" name="struts252"></a> -<h2>Struts 2.5.2</h2> +<a class="anchor" name="struts255"></a> +<h2>Struts 2.5.5</h2> <p> - <a href="http://struts.apache.org/">Apache Struts 2.5.2</a> is an elegant, extensible + <a href="http://struts.apache.org/">Apache Struts 2.5.5</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.2 is the "best available" version of Struts in the 2.5 series. + Struts 2.5.5 is the "best available" version of Struts in the 2.5 series. </p> <ul> <li> - <a href="http://struts.apache.org/docs/version-notes-252.html">Version Notes</a> + <a href="http://struts.apache.org/docs/version-notes-255.html">Version Notes</a> </li> <li>Full Distribution: <ul> <li> - <a href="[preferred]struts/2.5.2/struts-2.5.2-all.zip">struts-2.5.2-all.zip</a> (65MB) - [<a href="http://www.apache.org/dist/struts/2.5.2/struts-2.5.2-all.zip.asc">PGP</a>] - [<a href="http://www.apache.org/dist/struts/2.5.2/struts-2.5.2-all.zip.md5">MD5</a>] + <a href="[preferred]struts/2.5.5/struts-2.5.5-all.zip">struts-2.5.5-all.zip</a> (65MB) + [<a href="http://www.apache.org/dist/struts/2.5.5/struts-2.5.5-all.zip.asc">PGP</a>] + [<a href="http://www.apache.org/dist/struts/2.5.5/struts-2.5.5-all.zip.md5">MD5</a>] </li> </ul> </li> @@ -205,9 +205,9 @@ <li>Example Applications: <ul> <li> - <a href="[preferred]struts/2.5.2/struts-2.5.2-apps.zip">struts-2.5.2-apps.zip</a> (35MB) - [<a href="http://www.apache.org/dist/struts/2.5.2/struts-2.5.2-apps.zip.asc">PGP</a>] - [<a href="http://www.apache.org/dist/struts/2.5.2/struts-2.5.2-apps.zip.md5">MD5</a>] + <a href="[preferred]struts/2.5.5/struts-2.5.5-apps.zip">struts-2.5.5-apps.zip</a> (35MB) + [<a href="http://www.apache.org/dist/struts/2.5.5/struts-2.5.5-apps.zip.asc">PGP</a>] + [<a href="http://www.apache.org/dist/struts/2.5.5/struts-2.5.5-apps.zip.md5">MD5</a>] </li> </ul> </li> @@ -215,9 +215,9 @@ <li>Essential Dependencies Only: <ul> <li> - <a href="[preferred]struts/2.5.2/struts-2.5.2-min-lib.zip">struts-2.5.2-min-lib.zip</a> (4MB) - [<a href="http://www.apache.org/dist/struts/2.5.2/struts-2.5.2-min-lib.zip.asc">PGP</a>] - [<a href="http://www.apache.org/dist/struts/2.5.2/struts-2.5.2-min-lib.zip.md5">MD5</a>] + <a href="[preferred]struts/2.5.5/struts-2.5.5-min-lib.zip">struts-2.5.5-min-lib.zip</a> (4MB) + [<a href="http://www.apache.org/dist/struts/2.5.5/struts-2.5.5-min-lib.zip.asc">PGP</a>] + [<a href="http://www.apache.org/dist/struts/2.5.5/struts-2.5.5-min-lib.zip.md5">MD5</a>] </li> </ul> </li> @@ -225,9 +225,9 @@ <li>All Dependencies: <ul> <li> - <a href="[preferred]struts/2.5.2/struts-2.5.2-lib.zip">struts-2.5.2-lib.zip</a> (19MB) - [<a href="http://www.apache.org/dist/struts/2.5.2/struts-2.5.2-lib.zip.asc">PGP</a>] - [<a href="http://www.apache.org/dist/struts/2.5.2/struts-2.5.2-lib.zip.md5">MD5</a>] + <a href="[preferred]struts/2.5.5/struts-2.5.5-lib.zip">struts-2.5.5-lib.zip</a> (19MB) + [<a href="http://www.apache.org/dist/struts/2.5.5/struts-2.5.5-lib.zip.asc">PGP</a>] + [<a href="http://www.apache.org/dist/struts/2.5.5/struts-2.5.5-lib.zip.md5">MD5</a>] </li> </ul> </li> @@ -235,9 +235,9 @@ <li>Documentation: <ul> <li> - <a href="[preferred]struts/2.5.2/struts-2.5.2-docs.zip">struts-2.5.2-docs.zip</a> (13MB) - [<a href="http://www.apache.org/dist/struts/2.5.2/struts-2.5.2-docs.zip.asc">PGP</a>] - [<a href="http://www.apache.org/dist/struts/2.5.2/struts-2.5.2-docs.zip.md5">MD5</a>] + <a href="[preferred]struts/2.5.5/struts-2.5.5-docs.zip">struts-2.5.5-docs.zip</a> (13MB) + [<a href="http://www.apache.org/dist/struts/2.5.5/struts-2.5.5-docs.zip.asc">PGP</a>] + [<a href="http://www.apache.org/dist/struts/2.5.5/struts-2.5.5-docs.zip.md5">MD5</a>] </li> </ul> </li> @@ -245,9 +245,9 @@ <li>Source: <ul> <li> - <a href="[preferred]struts/2.5.2/struts-2.5.2-src.zip">struts-2.5.2-src.zip</a> (7MB) - [<a href="http://www.apache.org/dist/struts/2.5.2/struts-2.5.2-src.zip.asc">PGP</a>] - [<a href="http://www.apache.org/dist/struts/2.5.2/struts-2.5.2-src.zip.md5">MD5</a>] + <a href="[preferred]struts/2.5.5/struts-2.5.5-src.zip">struts-2.5.5-src.zip</a> (7MB) + [<a href="http://www.apache.org/dist/struts/2.5.5/struts-2.5.5-src.zip.asc">PGP</a>] + [<a href="http://www.apache.org/dist/struts/2.5.5/struts-2.5.5-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.2/struts-2.5-BETA3-all.zip.asc">PGP</a>] - [<a href="http://www.apache.org/dist/struts/2.5.2/struts-2.5-BETA3-all.zip.md5">MD5</a>] + [<a href="http://www.apache.org/dist/struts/2.5.5/struts-2.5-BETA3-all.zip.asc">PGP</a>] + [<a href="http://www.apache.org/dist/struts/2.5.5/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 Oct 21 11:20:28 2016 @@ -137,7 +137,7 @@ <ul> <li> <a href="http://struts.apache.org/download.cgi#struts-ga"> - Struts 2.5.2 + Struts 2.5.5 </a> ("best available") </li> </ul> @@ -222,23 +222,36 @@ <tbody> <tr> <td class="no-wrap"> - Struts 2.5.1 + Struts 2.3.31 </td> - <td class="no-wrap">18 Jun 2016</td> + <td class="no-wrap">18 Oct 2016</td> <td> <br/> </td> <td> - <a href="/docs/version-notes-251.html">Version notes</a> + <a href="/docs/version-notes-2331.html">Version notes</a> </td> </tr> <tr> <td class="no-wrap"> - Struts 2.3.29 + Struts 2.5.2 </td> - <td class="no-wrap">17 June 2016</td> + <td class="no-wrap">7 Jul 2016</td> <td> - <br/> + <a href="/docs/s2-043.html">S2-043</a> + </td> + <td> + <a href="/docs/version-notes-252.html">Version notes</a> + </td> + </tr> + <tr> + <td class="no-wrap"> + Struts 2.3.30 + </td> + <td class="no-wrap">7 Jul 2016</td> + <td> + <a href="/docs/s2-043.html">S2-043</a>, + <a href="/docs/s2-042.html">S2-042</a> </td> <td> <a href="/docs/version-notes-2330.html">Version notes</a> @@ -246,10 +259,23 @@ </tr> <tr> <td class="no-wrap"> + Struts 2.5.1 + </td> + <td class="no-wrap">18 Jun 2016</td> + <td> + <a href="/docs/s2-043.html">S2-043</a> + </td> + <td> + <a href="/docs/version-notes-251.html">Version notes</a> + </td> + </tr> + <tr> + <td class="no-wrap"> Struts 2.5 </td> <td class="no-wrap">9 May 2016</td> <td> + <a href="/docs/s2-043.html">S2-043</a>, <a href="/docs/s2-041.html">S2-041</a> </td> <td> @@ -262,6 +288,8 @@ </td> <td class="no-wrap">19 April 2016</td> <td> + <a href="/docs/s2-043.html">S2-043</a>, + <a href="/docs/s2-042.html">S2-042</a>, <a href="/docs/s2-041.html">S2-041</a>, <a href="/docs/s2-040.html">S2-040</a>, <a href="/docs/s2-039.html">S2-039</a>, @@ -282,6 +310,8 @@ </td> <td class="no-wrap">18 March 2016</td> <td> + <a href="/docs/s2-043.html">S2-043</a>, + <a href="/docs/s2-042.html">S2-042</a>, <a href="/docs/s2-041.html">S2-041</a>, <a href="/docs/s2-040.html">S2-040</a>, <a href="/docs/s2-039.html">S2-039</a>, @@ -302,6 +332,8 @@ </td> <td class="no-wrap">19 April 2016</td> <td> + <a href="/docs/s2-043.html">S2-043</a>, + <a href="/docs/s2-042.html">S2-042</a>, <a href="/docs/s2-041.html">S2-041</a>, <a href="/docs/s2-040.html">S2-040</a>, <a href="/docs/s2-039.html">S2-039</a>, @@ -322,6 +354,8 @@ </td> <td class="no-wrap">19 April 2016</td> <td> + <a href="/docs/s2-043.html">S2-043</a>, + <a href="/docs/s2-042.html">S2-042</a>, <a href="/docs/s2-041.html">S2-041</a>, <a href="/docs/s2-040.html">S2-040</a>, <a href="/docs/s2-039.html">S2-039</a>, @@ -342,6 +376,8 @@ </td> <td class="no-wrap">24 September 2015</td> <td> + <a href="/docs/s2-043.html">S2-043</a>, + <a href="/docs/s2-042.html">S2-042</a>, <a href="/docs/s2-041.html">S2-041</a>, <a href="/docs/s2-040.html">S2-040</a>, <a href="/docs/s2-039.html">S2-039</a>, @@ -365,6 +401,8 @@ </td> <td class="no-wrap">7 May 2015</td> <td> + <a href="/docs/s2-043.html">S2-043</a>, + <a href="/docs/s2-042.html">S2-042</a>, <a href="/docs/s2-041.html">S2-041</a>, <a href="/docs/s2-040.html">S2-040</a>, <a href="/docs/s2-039.html">S2-039</a>, @@ -389,6 +427,8 @@ </td> <td class="no-wrap">6 May 2015</td> <td> + <a href="/docs/s2-043.html">S2-043</a>, + <a href="/docs/s2-042.html">S2-042</a>, <a href="/docs/s2-041.html">S2-041</a>, <a href="/docs/s2-040.html">S2-040</a>, <a href="/docs/s2-039.html">S2-039</a>, @@ -413,6 +453,8 @@ </td> <td class="no-wrap">7 December 2014</td> <td> + <a href="/docs/s2-043.html">S2-043</a>, + <a href="/docs/s2-042.html">S2-042</a>, <a href="/docs/s2-041.html">S2-041</a>, <a href="/docs/s2-040.html">S2-040</a>, <a href="/docs/s2-039.html">S2-039</a>, Modified: websites/production/struts/content/index.html ============================================================================== --- websites/production/struts/content/index.html (original) +++ websites/production/struts/content/index.html Fri Oct 21 11:20:28 2016 @@ -125,7 +125,7 @@ extensible using a plugin architecture, and ships with plugins to support REST, AJAX and JSON. </p> - <a href="/download.cgi#struts252" class="btn btn-primary btn-large"> + <a href="/download.cgi#struts255" 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.2 GA</h2> + <h2>Apache Struts 2.5.5 GA</h2> <p> - Apache Struts 2.5.2 GA has been released<br/>on 07 july 2016. + Apache Struts 2.5.5 GA has been released<br/>on 21 October 2016. </p> - Read more in <a href="announce.html#a20160707">Announcement</a> or in - <a href="/docs/version-notes-252.html">Version notes</a> + Read more in <a href="announce.html#a20161021">Announcement</a> or in + <a href="/docs/version-notes-255.html">Version notes</a> </div> <div class="column col-md-4"> <h2>Apache Struts 2.3.31 GA</h2>