Modified: websites/production/struts/content/docs/message-store-interceptor.html
==============================================================================
--- websites/production/struts/content/docs/message-store-interceptor.html 
(original)
+++ websites/production/struts/content/docs/message-store-interceptor.html Mon 
Feb 29 19:38:05 2016
@@ -138,114 +138,34 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><p>
-An interceptor to store a ValidationAware action's messages / errors and field 
errors into
-HTTP Session, such that it will be retrievable at a later stage. This allows 
the action's message /
-errors and field errors to be available longer that just the particular HTTP 
request.
-</p>
-
-<p></p><p>
-If no session exists, nothing will be stored and can be retrieved later. In 
other terms,
-the application is responsible to open the session.
-</p>
-
-<p></p><p>
-In the 'STORE' mode, the interceptor will store the ValidationAware action's 
message / errors
-and field errors into HTTP session.
-</p>
-
-<p></p><p>
-In the 'RETRIEVE' mode, the interceptor will retrieve the stored action's 
message / errors  and field
-errors and put them back into the ValidationAware action.
-</p>
-
-<p></p><p>
-In the 'AUTOMATIC' mode, the interceptor will always retrieve the stored 
action's message / errors 
-and field errors and put them back into the ValidationAware action, and after 
Action execution, 
-if the com.opensymphony.xwork2.Result is an instance of ServletRedirectResult, 
the action's message / errors
-and field errors into automatically be stored in the HTTP session..
-</p>
-
-<p></p><p>
-The interceptor does nothing in the 'NONE' mode, which is the default.
-</p>
-
-<p></p><p>
-The operation mode could be switched using:<br clear="none">
-1] Setting the interceptor parameter eg.
-</p>
-<pre>
-  &lt;action name="submitApplication" ...&gt;
-     &lt;interceptor-ref name="store"&gt;
-        &lt;param name="operationMode"&gt;STORE&lt;/param&gt;
-     &lt;/interceptor-ref&gt;
-     &lt;interceptor-ref name="defaultStack" /&gt;
-     ....
-  &lt;/action&gt;
-</pre>
-
-<p></p><p>
-2] Through request parameter (allowRequestParameterSwitch must be 'true' which 
is the default)
-</p>
-
-<p></p><pre>
-  // the request will have the operation mode in 'STORE'
-  http://localhost:8080/context/submitApplication.action?operationMode=STORE
-</pre>
-
-
-<h2 id="MessageStoreInterceptor-Parameters">Parameters</h2>
-
-
-<p></p><ul><li>allowRequestParameterSwitch - To enable request parameter that 
could switch the operation mode
-                                       of this interceptor. 
</li><li>requestParameterSwitch - The request parameter that will indicate what 
mode this
-                                  interceptor is in. </li><li>operationMode - 
The operation mode this interceptor should be in
-                         (either 'STORE', 'RETRIEVE', 'AUTOMATIC', or 'NONE'). 
'NONE' being the default.</li></ul>
-
-
-<h2 id="MessageStoreInterceptor-ExtendingtheInterceptor">Extending the 
Interceptor</h2>
-
-<p></p><p>
-The following method could be overridden:
-</p>
-
-<p></p><ul><li>getRequestOperationMode - get the operation mode of this 
interceptor based on the request parameters</li><li>mergeCollection - merge two 
collections</li><li>mergeMap - merge two map</li></ul>
-
-
-<h2 id="MessageStoreInterceptor-Examples">Examples</h2>
-
-<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;action name=&quot;submitApplication&quot; ....&gt;
-   &lt;interceptor-ref name=&quot;store&quot;&gt;
-     &lt;param name=&quot;operationMode&quot;&gt;aSTORE&lt;/param&gt;
-   &lt;/interceptor-ref&gt;
-   &lt;interceptor-ref name=&quot;defaultStack&quot; /&gt;
-   &lt;result name=&quot;input&quot; 
type=&quot;redirect&quot;&gt;aapplicationFailed.action&lt;/result&gt;
-   &lt;result 
type=&quot;dispatcher&quot;&gt;applicationSuccess.jsp&lt;/result&gt;
+            <div id="ConfluenceContent"><p>An interceptor to store a <a 
shape="rect" class="unresolved" href="#">ValidationAware</a>&#160;action's 
messages / errors and field errors into&#160;HTTP Session, such that it will be 
retrievable at a later stage. This allows the action's message /&#160;errors 
and field errors to be available longer that just the particular HTTP 
request.</p><p>If no session exists, nothing will be stored and can be 
retrieved later. In other terms,&#160;the application is responsible to open 
the session.</p><p>In the <strong>STORE</strong>&#160;mode, the interceptor 
will store the <a shape="rect" class="unresolved" 
href="#">ValidationAware</a>&#160;action's message / errors&#160;and field 
errors into HTTP session.</p><p>In the <strong>RETRIEVE</strong>&#160;mode, the 
interceptor will retrieve the stored action's message / errors and 
field&#160;errors and put them back into the <a shape="rect" class="unresolved" 
href="#">ValidationAware</a>&#160;action.</p><p
 >In the <strong>AUTOMATIC</strong>&#160;mode, the interceptor will always 
 >retrieve the stored action's message / errors&#160;and field errors and put 
 >them back into the [ValidationAware] action, and after Action 
 >execution,&#160;if the <a shape="rect" class="unresolved" 
 >href="#">Result</a>&#160;is an instance of <a shape="rect" class="unresolved" 
 >href="#">ServletRedirectResult</a>, the action's message / errors&#160;and 
 >field errors into automatically be stored in the HTTP session..</p><p>The 
 >interceptor does nothing in the <strong>NONE</strong>&#160;mode, which is the 
 >default.</p><p>The operation mode could be switched 
 >using:</p><ol><li><p>Setting the interceptor parameter eg.</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;action name="submitApplication" ...&gt;
+    &lt;interceptor-ref name="store"/&gt;
+           &lt;param name="operationMode"&gt;STORE&lt;/param&gt;
+    &lt;/interceptor-ref&gt;
+       &lt;interceptor-ref name="defaultStack" /&gt;
+    ....
+&lt;/action&gt;</pre>
+</div></div></li><li><p>Through request parameter 
<code>allowRequestParameterSwitch</code>&#160;must be 'true' which is the 
default</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;">the request will have the operation mode in 'STORE'
+http://localhost:8080/context/submitApplication.action?operationMode=STORE</pre>
+</div></div></li></ol><h2 
id="MessageStoreInterceptor-Parameters">Parameters</h2><ul><li><code>allowRequestParameterSwitch</code>&#160;-
 To enable request parameter that could switch the operation mode&#160;of this 
interceptor.</li><li><code>requestParameterSwitch</code>&#160;- The request 
parameter that will indicate what mode this&#160;interceptor is 
in.</li><li><code>operationMode</code>&#160;- The operation mode this 
interceptor should be in&#160;(either <strong>STORE</strong>, 
<strong>RETRIEVE</strong>, <strong>AUTOMATIC</strong>, or 
<strong>NONE</strong>). <strong>NONE&#160;</strong>being the 
default.</li></ul><h2 
id="MessageStoreInterceptor-ExtendingtheInterceptor">Extending the 
Interceptor</h2><p>There is no known extensions.</p><h2 
id="MessageStoreInterceptor-Examples">Examples</h2><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;action name="submitApplication" ....&gt;
+       &lt;interceptor-ref name="store"&gt;
+               &lt;param name="operationMode"&gt;STORE&lt;/param&gt;
+       &lt;/interceptor-ref&gt;
+       &lt;interceptor-ref name="defaultStack" /&gt;
+       &lt;result name="input" 
type="redirectAction"&gt;applicationFailed&lt;/result&gt;
+       &lt;result type="dispatcher"&gt;applicationSuccess.jsp&lt;/result&gt;
 &lt;/action&gt;
 
-&lt;action name=&quot;applicationFailed&quot; ....&gt;
-   &lt;interceptor-ref name=&quot;store&quot;&gt;
-      &lt;param name=&quot;operationMode&quot;&gt;RETRIEVE&lt;/param&gt;
-   &lt;/interceptor-ref&gt;
-   &lt;result&gt;applicationFailed.jsp&lt;/result&gt;
-&lt;/action&gt;
-
-]]></script>
-</div></div>
-
-<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;p&gt;
-With the example above, &#39;submitApplication.action&#39; will have the 
action messages / errors / field errors stored
-in the HTTP Session. Later when needed, (in this case, when 
&#39;applicationFailed.action&#39; is fired, it
-will get the action messages / errors / field errors stored in the HTTP 
Session and put them back into
-the action.
-&lt;/p&gt;
-]]></script>
-</div></div></div>
+&lt;action name="applicationFailed" ....&gt;
+       &lt;interceptor-ref name="store"&gt;
+               &lt;param name="operationMode"&gt;RETRIEVE&lt;/param&gt;
+       &lt;/interceptor-ref&gt;
+       &lt;result&gt;applicationFailed.jsp&lt;/result&gt;
+&lt;/action&gt;</pre>
+</div></div><p>With the example above, 
<strong>submitApplication.action</strong>&#160;will have the action messages / 
errors / field errors stored&#160;in the HTTP Session. Later when needed, (in 
this case, when <strong>applicationFailed.action</strong>&#160;is fired, 
it&#160;will get the action messages / errors / field errors stored in the HTTP 
Session and put them back into&#160;the action.</p><p>&#160;</p></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/objectfactory.html
==============================================================================
--- websites/production/struts/content/docs/objectfactory.html (original)
+++ websites/production/struts/content/docs/objectfactory.html Mon Feb 29 
19:38:05 2016
@@ -146,7 +146,7 @@ under the License.
     .....
 }
 </pre>
-</div></div><h3 id="ObjectFactory-Definededicatedfactory">Define dedicated 
factory</h3><p>If you want to just extend one part of ObjectFactory, ie. to 
change how <a shape="rect" href="result-types.html">Result Types</a> are build, 
you can implement <code>ResultFactory</code> interface and register it with 
dedicated name, see <a shape="rect" href="plugins.html">Extension Points</a> 
for more details. Original ObjectFactory will use these dedicated factories to 
do the work. It's already done this way - the original functionality of 
ObjectFactory was extracted to separated classes which implements the 
interfaces below. Check the source of ObjectFactory to see more details. All 
these factories are available as from version 2.3.16.</p><p>List of Factory 
interfaces:</p><ul class="alternate"><li><code>ResultFactory</code> - dedicated 
interfaces used by <a shape="rect" href="objectfactory.html">ObjectFactory</a> 
to create <a shape="rect" href="result-types.html">Result Types</a><ul class="al
 ternate"><li><code>StrutsResultFactory</code> it's internal implementation 
which checks if Result implements <code>ParamNameAwareResult</code> interface 
to restrict names of parameters set on the instance of Result, see <a 
shape="rect" href="result-types.html">Result Types</a> for more 
info.</li></ul></li><li><code>ActionFactory</code> - dedicated interface used 
by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to 
actions</li><li><code>InterceptorFactory</code> - dedicated interface used by 
<a shape="rect" href="objectfactory.html">ObjectFactory</a> to create 
interceptors</li><li><code>ValidatorFactory</code> - dedicated interface used 
by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to create 
validators</li><li><code>ConverterFactory</code> - dedicated interface used by 
<a shape="rect" href="objectfactory.html">ObjectFactory</a> to create instances 
of <a shape="rect" class="createlink" 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spac
 
eKey=WW&amp;title=TypeConverter&amp;linkCreation=true&amp;fromPageId=27470">TypeConverter</a></li><li><code>UnknownHandlerFactory</code>
 - dedicated interfaces used&#160;by&#160;<a shape="rect" 
href="objectfactory.html">ObjectFactory</a>&#160;to create instances of&#160;<a 
shape="rect" href="unknown-handlers.html">Unknown Handlers</a>&#160;(as from 
version 2.3.18)</li></ul><h2 id="ObjectFactory-Next:">Next: <a shape="rect" 
href="actionmapper.html">ActionMapper</a></h2></div>
+</div></div><h3 id="ObjectFactory-Definededicatedfactory">Define dedicated 
factory</h3><p>If you want to just extend one part of ObjectFactory, ie. to 
change how <a shape="rect" href="result-types.html">Result Types</a> are build, 
you can implement <code>ResultFactory</code> interface and register it with 
dedicated name, see <a shape="rect" href="plugins.html">Extension Points</a> 
for more details. Original ObjectFactory will use these dedicated factories to 
do the work. It's already done this way - the original functionality of 
ObjectFactory was extracted to separated classes which implements the 
interfaces below. Check the source of ObjectFactory to see more details. All 
these factories are available as from version 2.3.16.</p><p>List of Factory 
interfaces:</p><ul class="alternate"><li><code>ResultFactory</code> - dedicated 
interfaces used by <a shape="rect" href="objectfactory.html">ObjectFactory</a> 
to create <a shape="rect" href="result-types.html">Result Types</a><ul class="al
 ternate"><li><code>StrutsResultFactory</code> it's internal implementation 
which checks if Result implements <code>ParamNameAwareResult</code> interface 
to restrict names of parameters set on the instance of Result, see <a 
shape="rect" href="result-types.html">Result Types</a> for more 
info.</li></ul></li><li><code>ActionFactory</code> - dedicated interface used 
by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to 
actions</li><li><code>InterceptorFactory</code> - dedicated interface used by 
<a shape="rect" href="objectfactory.html">ObjectFactory</a> to create 
interceptors</li><li><code>ValidatorFactory</code> - dedicated interface used 
by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to create 
validators</li><li><code>ConverterFactory</code> - dedicated interface used by 
<a shape="rect" href="objectfactory.html">ObjectFactory</a> to create instances 
of <a shape="rect" class="unresolved" 
href="#">TypeConverter</a></li><li><code>UnknownHandlerFactory</code> 
 - dedicated interfaces used&#160;by&#160;<a shape="rect" 
href="objectfactory.html">ObjectFactory</a>&#160;to create instances of&#160;<a 
shape="rect" href="unknown-handlers.html">Unknown Handlers</a>&#160;(as from 
version 2.3.18)</li></ul><h2 id="ObjectFactory-Next:">Next: <a shape="rect" 
href="actionmapper.html">ActionMapper</a></h2></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/obtain-response.html
==============================================================================
--- websites/production/struts/content/docs/obtain-response.html (original)
+++ websites/production/struts/content/docs/obtain-response.html Mon Feb 29 
19:38:05 2016
@@ -146,7 +146,7 @@ under the License.
 
 <h2 id="ObtainResponse-MainSuccessScenario(MSS)">Main Success Scenario 
(MSS)</h2>
 
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p> Step </p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p> Action </p></th></tr><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p> 1 </p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p> Client submits request to web server.  
</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 2 
</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Web server 
transfers request to container, and container transfers request to framework's 
dispatcher. </p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p> 3 </p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p> Dispatcher consults the <a shape="rect" 
class="createlink" 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&amp;title=mappings&amp;linkCreation=true&amp;fromPageId=29365";>mappings</a>
 to select the appropriate <a shape="rect" hre
 f="execute-action.html">action</a> and creates a <a shape="rect" 
class="createlink" 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&amp;title=context&amp;linkCreation=true&amp;fromPageId=29365";>context</a>
 for the request. </p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p> 4 </p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p> Dispatcher creates and invokes a <a shape="rect" 
class="createlink" 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&amp;title=proxy&amp;linkCreation=true&amp;fromPageId=29365";>proxy</a>
 to execute the action and its <a shape="rect" 
href="interceptors.html">interceptors</a>. </p></td></tr><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p> 5 </p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p> The proxy manages the action pre-process, the 
procedess, and the post-process. </p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p> 6 </p></th><td cols
 pan="1" rowspan="1" class="confluenceTd"><p> The invocation calls each 
interceptor in turn before executing the action. </p></td></tr><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p> 7 </p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p> Each interceptor affects the request as 
appropriate. </p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p> 8 </p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p> The action handles the transaction corresponding to 
the request. </p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p> 9 </p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p> The action returns a code indicating the appropriate 
<a shape="rect" class="createlink" 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&amp;title=result&amp;linkCreation=true&amp;fromPageId=29365";>result</a>.
 </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 0 
</p></th><td colspan="1" rowspan="1" class
 ="confluenceTd"><p> The invocation executes the result. </p></td></tr><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p> A </p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p> The result generates the response or 
transfers to a resource that will render the response. 
</p></td></tr></tbody></table></div>
+<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p> Step </p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p> Action </p></th></tr><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p> 1 </p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p> Client submits request to web server.  
</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 2 
</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Web server 
transfers request to container, and container transfers request to framework's 
dispatcher. </p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p> 3 </p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p> Dispatcher consults the <a shape="rect" 
class="unresolved" href="#">mappings</a> to select the appropriate <a 
shape="rect" href="execute-action.html">action</a> and creates a <a 
shape="rect" class="unresolved" href="#">context</a> for the request. </p></td><
 /tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 4 </p></th><td 
colspan="1" rowspan="1" class="confluenceTd"><p> Dispatcher creates and invokes 
a <a shape="rect" class="unresolved" href="#">proxy</a> to execute the action 
and its <a shape="rect" href="interceptors.html">interceptors</a>. 
</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 5 
</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> The proxy manages 
the action pre-process, the procedess, and the post-process. 
</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 6 
</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> The invocation 
calls each interceptor in turn before executing the action. 
</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 7 
</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Each interceptor 
affects the request as appropriate. </p></td></tr><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p> 8 </p></th><t
 d colspan="1" rowspan="1" class="confluenceTd"><p> The action handles the 
transaction corresponding to the request. </p></td></tr><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p> 9 </p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p> The action returns a code indicating the appropriate 
<a shape="rect" class="unresolved" href="#">result</a>. </p></td></tr><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p> 0 </p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p> The invocation executes the result. 
</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> A 
</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> The result 
generates the response or transfers to a resource that will render the 
response. </p></td></tr></tbody></table></div>
 
 
 <h2 id="ObtainResponse-Extensions">Extensions</h2>

Modified: websites/production/struts/content/docs/ognl-basics.html
==============================================================================
--- websites/production/struts/content/docs/ognl-basics.html (original)
+++ websites/production/struts/content/docs/ognl-basics.html Mon Feb 29 
19:38:05 2016
@@ -152,7 +152,7 @@ name       // call to animal.getName() b
 <pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">[0].name   // call to animal.getName()
 [1].name   // call to person.getName()
 </pre>
-</div></div><p>With expression like [0] ... [3] etc. Struts 2 will cut the 
stack and still return back a CompoundRoot object. To get the top of that 
particular stack cut, use <a shape="rect" class="createlink" 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&amp;title=0&amp;linkCreation=true&amp;fromPageId=14000";>0</a>.top</p><div
 class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>ognl expression</p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p>description</p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>[0].top</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>would get the top of the stack cut starting 
from element 0 in the stack (similar to top in this case)</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>[1].top</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>would get the top of the stack cut starting 
from element 1
  in the stack</p></td></tr></tbody></table></div><h2 
id="OGNLBasics-Accessingstaticproperties">Accessing static 
properties</h2><p>OGNL supports accessing static properties as well as static 
methods.</p><p>By default, Struts 2 is configured to disallow this--to enable 
OGNL's static member support you must set the 
<code>struts.ognl.allowStaticMethodAccess</code> constant to <code>true</code> 
via any of the <a shape="rect" href="constant-configuration.html">Constant 
Configuration</a> methods.</p><p>OGNL's static access looks like this:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div><p>With expression like [0] ... [3] etc. Struts 2 will cut the 
stack and still return back a CompoundRoot object. To get the top of that 
particular stack cut, use <a shape="rect" class="unresolved" 
href="#">0</a>.top</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>ognl expression</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>[0].top</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>would get the top of the stack cut starting from 
element 0 in the stack (similar to top in this case)</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>[1].top</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>would get the top of the stack cut starting 
from element 1 in the stack</p></td></tr></tbody></table></div><h2 
id="OGNLBasics-Accessingstaticproperties">Accessing static properties</h
 2><p>OGNL supports accessing static properties as well as static 
methods.</p><p>By default, Struts 2 is configured to disallow this--to enable 
OGNL's static member support you must set the 
<code>struts.ognl.allowStaticMethodAccess</code> constant to <code>true</code> 
via any of the <a shape="rect" href="constant-configuration.html">Constant 
Configuration</a> methods.</p><p>OGNL's static access looks like this:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <pre class="brush: text; gutter: false; theme: Default" 
style="font-size:12px;">@some.package.ClassName@FOO_PROPERTY
 @some.package.ClassName@someMethod()
 </pre>

Modified: websites/production/struts/content/docs/one-time-steps.html
==============================================================================
--- websites/production/struts/content/docs/one-time-steps.html (original)
+++ websites/production/struts/content/docs/one-time-steps.html Mon Feb 29 
19:38:05 2016
@@ -140,11 +140,11 @@ under the License.
         <div class="wiki-content">
             <div id="ConfluenceContent"><h1 
id="Onetimesteps-Content">Content</h1>
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1453884610727 {padding: 0px;}
-div.rbtoc1453884610727 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1453884610727 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1456773754359 {padding: 0px;}
+div.rbtoc1456773754359 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1456773754359 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1453884610727">
+/*]]>*/</style><div class="toc-macro rbtoc1456773754359">
 <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" href="#Onetimesteps-Content">Content</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a 
shape="rect" href="#Onetimesteps-Keysandconfiguration">Keys and 
configuration</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">1.1.1</span> <a 
shape="rect" href="#Onetimesteps-CreateandinstallaSSHkey">Create and install a 
SSH key</a></li><li><span class="TOCOutline">1.1.2</span> <a shape="rect" 
href="#Onetimesteps-CreateaPGPkey">Create a PGP key</a></li><li><span 
class="TOCOutline">1.1.3</span> <a shape="rect" 
href="#Onetimesteps-UpdateMavensettingsforourservers">Update Maven settings for 
our servers</a></li><li><span class="TOCOutline">1.1.4</span> <a shape="rect" 
href="#Onetimesteps-IncreaseMemorySettingsforMaven">Increase Memory Settings 
for Maven</a></li></ul>

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

Modified: websites/production/struts/content/docs/portlet-tiles-plugin.html
==============================================================================
--- websites/production/struts/content/docs/portlet-tiles-plugin.html (original)
+++ websites/production/struts/content/docs/portlet-tiles-plugin.html Mon Feb 
29 19:38:05 2016
@@ -157,7 +157,7 @@ under the License.
   &lt;version&gt;${struts2.version}&lt;/version&gt;
 &lt;/dependency&gt;
 </pre>
-</div></div></li><li>All package definitions which require tiles support must 
either extend the struts-portlet-tiles-default package or must register the <a 
shape="rect" class="createlink" 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&amp;title=Tiles+Result&amp;linkCreation=true&amp;fromPageId=30150178";>Tiles
 Result</a> type definition dedicated for Portlets.
+</div></div></li><li>All package definitions which require tiles support must 
either extend the struts-portlet-tiles-default package or must register the <a 
shape="rect" class="unresolved" href="#">Tiles Result</a> type definition 
dedicated for Portlets.
 <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;">
 &lt;result-types&gt;

Modified: websites/production/struts/content/docs/processing-forms.html
==============================================================================
--- websites/production/struts/content/docs/processing-forms.html (original)
+++ websites/production/struts/content/docs/processing-forms.html Mon Feb 29 
19:38:05 2016
@@ -138,7 +138,7 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><div 
class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>This tutorial assumes you've 
completed the <a shape="rect" class="createlink" 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&amp;title=Coding+Struts+2+Actons&amp;linkCreation=true&amp;fromPageId=14811889";>Coding
 Struts 2 Actons</a> tutorial and have a working coding_actions project. The 
example code for this tutorial, form_processing, is available for checkout from 
the Struts 2 GitHub subversion repository: <a shape="rect" 
class="external-link" href="https://github.com/apache/struts-examples"; 
rel="nofollow">https://github.com/apache/struts-examples</a>.</p></div></div><h3
 id="ProcessingForms-Introduction">Introduction</h3><p>In this tutorial we'll 
explore using Struts 2 to do more involv
 ed processing of a form submission. We'll cover how to use a Java model class 
to store the form input and how to create the Struts 2 form to match up with 
that model class.</p><p>The code provided in this tutorial may be added to the 
<a shape="rect" href="coding-struts-2-actions.html">Coding Struts 2 Actions</a> 
example or you can download this complete example from Google Code - <a 
shape="rect" class="external-link" 
href="http://code.google.com/p/struts2-examples/downloads/list"; 
rel="nofollow">http://code.google.com/p/struts2-examples/downloads/list</a>.</p><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 <a shape="rect" 
class="external-link" href="http://struts.apache.org/mail.html";>Struts 2 user 
mailing list</a> is an excellent place to get help. If you are having a problem 
getting the tutorial example 
 applications to work search the Struts 2 mailing list. If you don't find an 
answer to your problem, post a question on the mailing list.</p></div></div><h3 
id="ProcessingForms-FormsandAJavaModelClass">Forms and A Java Model 
Class</h3><p>For this tutorial let's say we need to provide a form that a user 
may submit to register for a prize drawing. Our business rules state the user 
must provide his/her first name, last name, email address, and age.</p><p>To 
encapsulate this data, we'll use a simple Java class that follows the basic 
Java Bean specifications (public set/get methods for each instance field). If 
you're following along add this class to package 
org.apache.struts.register.model in the <a shape="rect" 
href="coding-struts-2-actions.html">Coding Struts 2 Actions</a> 
example.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;"><b>Person.java</b></div><div class="codeContent panelContent pdl">
+            <div id="ConfluenceContent"><div 
class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>This tutorial assumes you've 
completed the <a shape="rect" class="unresolved" href="#">Coding Struts 2 
Actons</a> tutorial and have a working coding_actions project. The example code 
for this tutorial, form_processing, is available for checkout from the Struts 2 
GitHub subversion repository: <a shape="rect" class="external-link" 
href="https://github.com/apache/struts-examples"; 
rel="nofollow">https://github.com/apache/struts-examples</a>.</p></div></div><h3
 id="ProcessingForms-Introduction">Introduction</h3><p>In this tutorial we'll 
explore using Struts 2 to do more involved processing of a form submission. 
We'll cover how to use a Java model class to store the form input and how to 
create the Struts 2 form to match up
  with that model class.</p><p>The code provided in this tutorial may be added 
to the <a shape="rect" href="coding-struts-2-actions.html">Coding Struts 2 
Actions</a> example or you can download this complete example from Google Code 
- <a shape="rect" class="external-link" 
href="http://code.google.com/p/struts2-examples/downloads/list"; 
rel="nofollow">http://code.google.com/p/struts2-examples/downloads/list</a>.</p><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 <a shape="rect" 
class="external-link" href="http://struts.apache.org/mail.html";>Struts 2 user 
mailing list</a> is an excellent place to get help. If you are having a problem 
getting the tutorial example applications to work search the Struts 2 mailing 
list. If you don't find an answer to your problem, post a question on the 
mailing list.</p></div></d
 iv><h3 id="ProcessingForms-FormsandAJavaModelClass">Forms and A Java Model 
Class</h3><p>For this tutorial let's say we need to provide a form that a user 
may submit to register for a prize drawing. Our business rules state the user 
must provide his/her first name, last name, email address, and age.</p><p>To 
encapsulate this data, we'll use a simple Java class that follows the basic 
Java Bean specifications (public set/get methods for each instance field). If 
you're following along add this class to package 
org.apache.struts.register.model in the <a shape="rect" 
href="coding-struts-2-actions.html">Coding Struts 2 Actions</a> 
example.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;"><b>Person.java</b></div><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">public class Person
 {
     private String firstName;

Modified: websites/production/struts/content/docs/release-notes-202.html
==============================================================================
--- websites/production/struts/content/docs/release-notes-202.html (original)
+++ websites/production/struts/content/docs/release-notes-202.html Mon Feb 29 
19:38:05 2016
@@ -172,7 +172,7 @@ under the License.
 
 <h2 id="ReleaseNotes2.0.2-NewFeaturesandPlugins">New Features and Plugins</h2>
 
-<ul><li>Plugins are now documented in the <a shape="rect" class="createlink" 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=S2PLUGINS&amp;title=Angosso";>Apache
 Struts 2 Plugin Registry</a>.</li><li><a shape="rect" 
href="annotations.html">Annotations</a>: @Result annotation now supports 
parameters (WW-1575).</li><li><a shape="rect" href="ajax-tags.html">Ajax 
Tags</a>: The Autocompleter AJAX tag wraps Dojo's ComboBox and supports remote, 
static, and JSON content.</li><li><a shape="rect" 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=33274";>Spring
 Plugin</a>: Integrate Spring with your application using a plugin (WW-1499). 
Or, if you prefer, use the <a shape="rect" 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=33365";>Plexus
 Plugin</a> instead.</li><li><a shape="rect" 
href="file-upload-interceptor.html">File Uploading</a> Explore multiple file 
uploading through our new Showcase example (WW-1479).</li><li><a sha
 pe="rect" href="action.html">Action tag</a>: Eliminate unwanted exceptions 
with the new <code>flush</code> attribute (WW-1472).</li><li><a shape="rect" 
href="checkboxlist.html">Checkboxlist</a> tag: Use Maps with CheckboxList 
(WW-1471).</li><li><a shape="rect" href="roles-interceptor.html">Roles 
Interceptor</a>: Integrate JAAS with a new interceptor  - now on the default 
stack (WW-1469).</li><li><a shape="rect" href="textfield.html">Localized 
Links</a>: Use the new <code>key</code> attribute to streamline link markup 
(WW-1458).</li><li><a shape="rect" href="constant-configuration.html">Constant 
Configuration</a>: Override factory default settings from any XML configurtion 
document, including <code>web.xml</code>! (WW-1421).</li><li><a shape="rect" 
href="strutsxml-examples.html">Action Class Ref</a>: Configure a custom default 
Action for any package to use instead of ActionSupport (WW-1420).</li><li><a 
shape="rect" href="struts-maven-archetypes.html">Struts Maven Archetypes</a> 
The s
 tandard archetype includes sample code from the <a shape="rect" 
href="bootstrap.html">Bootstrap</a> tutorial {WW-1412).</li><li><a shape="rect" 
href="result-types.html">Direct Results</a>: Create a custom Result Type 
directly from an Action class  (WW-1393).</li></ul>
+<ul><li>Plugins are now documented in the <a shape="rect" class="unresolved" 
href="#">Apache Struts 2 Plugin Registry</a>.</li><li><a shape="rect" 
href="annotations.html">Annotations</a>: @Result annotation now supports 
parameters (WW-1575).</li><li><a shape="rect" href="ajax-tags.html">Ajax 
Tags</a>: The Autocompleter AJAX tag wraps Dojo's ComboBox and supports remote, 
static, and JSON content.</li><li><a shape="rect" 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=33274";>Spring
 Plugin</a>: Integrate Spring with your application using a plugin (WW-1499). 
Or, if you prefer, use the <a shape="rect" 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=33365";>Plexus
 Plugin</a> instead.</li><li><a shape="rect" 
href="file-upload-interceptor.html">File Uploading</a> Explore multiple file 
uploading through our new Showcase example (WW-1479).</li><li><a shape="rect" 
href="action.html">Action tag</a>: Eliminate unwanted exceptions with the new 
<code>f
 lush</code> attribute (WW-1472).</li><li><a shape="rect" 
href="checkboxlist.html">Checkboxlist</a> tag: Use Maps with CheckboxList 
(WW-1471).</li><li><a shape="rect" href="roles-interceptor.html">Roles 
Interceptor</a>: Integrate JAAS with a new interceptor  - now on the default 
stack (WW-1469).</li><li><a shape="rect" href="textfield.html">Localized 
Links</a>: Use the new <code>key</code> attribute to streamline link markup 
(WW-1458).</li><li><a shape="rect" href="constant-configuration.html">Constant 
Configuration</a>: Override factory default settings from any XML configurtion 
document, including <code>web.xml</code>! (WW-1421).</li><li><a shape="rect" 
href="strutsxml-examples.html">Action Class Ref</a>: Configure a custom default 
Action for any package to use instead of ActionSupport (WW-1420).</li><li><a 
shape="rect" href="struts-maven-archetypes.html">Struts Maven Archetypes</a> 
The standard archetype includes sample code from the <a shape="rect" 
href="bootstrap.html">Bootstrap
 </a> tutorial {WW-1412).</li><li><a shape="rect" 
href="result-types.html">Direct Results</a>: Create a custom Result Type 
directly from an Action class  (WW-1393).</li></ul>
 
 
 <h2 id="ReleaseNotes2.0.2-ExperimentalFeaturesandPlugins">Experimental 
Features and Plugins </h2>

Modified: websites/production/struts/content/docs/release-plan-200.html
==============================================================================
--- websites/production/struts/content/docs/release-plan-200.html (original)
+++ websites/production/struts/content/docs/release-plan-200.html Mon Feb 29 
19:38:05 2016
@@ -224,7 +224,7 @@ under the License.
 
 <h2 id="ReleasePlan2.0.0-TestBuildDistributionChecklist(A)">Test Build 
Distribution Checklist (A)</h2>
 
-<p>See also <a shape="rect" class="createlink" 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&amp;title=Creating+and+Signing+Releases&amp;linkCreation=true&amp;fromPageId=19602";>Creating
 and Signing Releases</a></p>
+<p>See also <a shape="rect" class="unresolved" href="#">Creating and Signing 
Releases</a></p>
 
 <div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p> # </p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p> Description </p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p> Completed </p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p> A1. </p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p> Setup new JIRA version level or update 
release on Roadmap </p></td><th colspan="1" rowspan="1" 
class="confluenceTh"><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)"> Done </p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p> A2. </p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p> Tag release in svn: ${STRUTS_2_0_0} </p></td><th 
colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emo
 ticon-tick" 
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png";
 data-emoticon-name="tick" alt="(tick)"> Done (r447072) </p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p> A3. </p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p> Update POM version level and run 
Distribution Target </p></td><th colspan="1" rowspan="1" 
class="confluenceTh"><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)"> Done </p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p> A4. </p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p> Create Sums and Sign Distributions </p></td><th 
colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon 
emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb
 3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" 
data-emoticon-name="tick" alt="(tick)"> Done </p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p> A5. </p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p> Upload Distribution to 
<code>people.apache.org/builds/struts/2.0.0/</code> </p></td><th colspan="1" 
rowspan="1" class="confluenceTh"><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)"> Done </p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p> A6. </p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p> Deploy JAR to Apache Java-Repository </p></td><th 
colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon 
emoticon-tick" 
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticon
 s/check.png" data-emoticon-name="tick" alt="(tick)"> Done 
</p></th></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p> <code>$ mvn deploy -P pre-assembly</code> </p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p> A7. </p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p> Post release-quality vote on dev@ lists 
</p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> ${STATUS} 
</p></th></tr></tbody></table></div>
 

Modified: websites/production/struts/content/docs/rest-plugin.html
==============================================================================
--- websites/production/struts/content/docs/rest-plugin.html (original)
+++ websites/production/struts/content/docs/rest-plugin.html Mon Feb 29 
19:38:05 2016
@@ -139,11 +139,11 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><div 
class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>This plugin is only available with 
Struts 2.1.1 or later</p></div></div><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1453884501969 {padding: 0px;}
-div.rbtoc1453884501969 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1453884501969 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1456773665918 {padding: 0px;}
+div.rbtoc1456773665918 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1456773665918 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1453884501969">
+/*]]>*/</style></p><div class="toc-macro rbtoc1456773665918">
 <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" href="#RESTPlugin-Overview">Overview</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a 
shape="rect" href="#RESTPlugin-Features">Features</a></li><li><span 
class="TOCOutline">1.2</span> <a shape="rect" 
href="#RESTPlugin-MappingRESTURLstoStruts2Actions">Mapping REST URLs to Struts 
2 Actions</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">1.2.1</span> <a 
shape="rect" href="#RESTPlugin-RESTfulURLMappingLogic">RESTful URL Mapping 
Logic</a></li></ul>

Modified: websites/production/struts/content/docs/result-configuration.html
==============================================================================
--- websites/production/struts/content/docs/result-configuration.html (original)
+++ websites/production/struts/content/docs/result-configuration.html Mon Feb 
29 19:38:05 2016
@@ -139,14 +139,14 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1453884188561 {padding: 0px;}
-div.rbtoc1453884188561 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1453884188561 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1456773353562 {padding: 0px;}
+div.rbtoc1456773353562 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1456773353562 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1453884188561">
+/*]]>*/</style></p><div class="toc-macro rbtoc1456773353562">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#ResultConfiguration-ResultElements">Result Elements</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#ResultConfiguration-IntelligentDefaults">Intelligent 
Defaults</a></li><li><a shape="rect" 
href="#ResultConfiguration-Multiplenames">Multiple names</a></li></ul>
-</li><li><a shape="rect" href="#ResultConfiguration-GlobalResults">Global 
Results</a></li><li><a shape="rect" 
href="#ResultConfiguration-DynamicResults">Dynamic Results</a></li></ul>
+</li><li><a shape="rect" href="#ResultConfiguration-GlobalResults">Global 
Results</a></li><li><a shape="rect" 
href="#ResultConfiguration-DynamicResults">Dynamic Results</a></li><li><a 
shape="rect" href="#ResultConfiguration-ReturningResultObjects">Returning 
Result Objects</a></li></ul>
 </div><p>When an <a shape="rect" href="action.html">action</a> class method 
completes, it returns a String. The value of the String is used to select a 
result element. An action mapping will often have a set of results representing 
different possible outcomes. A standard set of result tokens are defined by the 
<code>ActionSupport</code> base class.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>Predefined result names</b></div><div 
class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">String SUCCESS = "success";
 String NONE    = "none";
@@ -155,10 +155,11 @@ String INPUT   = "input";
 String LOGIN   = "login";
 </pre>
 </div></div><p>Of course, applications can define other result tokens to match 
specific cases.</p><p><img class="emoticon emoticon-information" 
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/information.png";
 data-emoticon-name="information" alt="(info)"> Returning <code><a shape="rect" 
class="external-link" 
href="http://struts.apache.org/2.x/struts2-core/apidocs/com/opensymphony/xwork2/Action.html#NONE";>ActionSupport.NONE</a></code>
 (or <code>null</code>) from an <a shape="rect" href="action.html">action</a> 
class method causes the results processing to be skipped. This is useful if the 
action fully handles the result processing such as writing directly to the 
HttpServletResponse OutputStream.</p><h2 
id="ResultConfiguration-ResultElements">Result Elements</h2><p>The result 
element has two jobs. First, it provides a logical name. An <code>Action</code> 
can pass back a token like "success" or "error" without kn
 owing any other implementation details. Second, the result element provides a 
result type. Most results simply forward to a server page or template, but 
other <a shape="rect" href="result-types.html">Result Types</a> can be used to 
do more interesting things.</p><h3 
id="ResultConfiguration-IntelligentDefaults">Intelligent Defaults</h3><p>Each 
package may set a default result type to be used if none is specified in a 
result element. If one package extends another, the "child" package can set its 
own default result, or inherit one from the parent.</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>Setting a default Result 
Type</b></div><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">&lt;result-types&gt;
-   &lt;result-type name="dispatcher" default="true"
-                class="org.apache.struts2.dispatcher.ServletDispatcherResult" 
/&gt;
-&lt;/result-types&gt;
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">public Result runAction() {
+       ServletDispatcherResult result = new ServletDispatcherResult();
+       result.setLocation("input-form.jsp");
+       return result;
+}
 </pre>
 </div></div><p>If a <code>type</code> attribute is not specified, the 
framework will use the default <code>dispatcher</code> type, which forwards to 
another web resource. If the resource is a JavaServer Page, then the container 
will render it, using its JSP engine.</p><p>Likewise if the <code>name</code> 
attribute is not specified, the framework will give it the name 
"success".</p><p>Using these intelligent defaults, the most often used result 
types also become the simplest.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>Result element without 
defaults</b></div><div class="codeContent panelContent pdl">
 <pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;result name="success" type="dispatcher"&gt;
@@ -212,7 +213,13 @@ public String getNextAction() {
     &lt;result name="next" 
type="redirectAction"&gt;${nextAction}&lt;/result&gt;
 &lt;/action&gt;
 </pre>
-</div></div><p>If a <code>FragmentAction</code> method returns "next" the 
actual <em>value</em> of that result will be whatever is in 
<code>FragmentAction</code>'s <code>nextAction</code> property. So 
<code>nextAction</code> may be computed based on whatever state information 
necessary then passed at runtime to "next"'s 
<code>redirectAction</code>.</p><p>See <a shape="rect" 
href="parameters-in-configuration-results.html">Parameters in configuration 
results</a> for an expanded discussion.</p></div>
+</div></div><p>If a <code>FragmentAction</code> method returns "next" the 
actual <em>value</em> of that result will be whatever is in 
<code>FragmentAction</code>'s <code>nextAction</code> property. So 
<code>nextAction</code> may be computed based on whatever state information 
necessary then passed at runtime to "next"'s 
<code>redirectAction</code>.</p><p>See <a shape="rect" 
href="parameters-in-configuration-results.html">Parameters in configuration 
results</a> for an expanded discussion.</p><p>&#160;</p><h2 
id="ResultConfiguration-ReturningResultObjects">Returning Result 
Objects</h2><p>Instead of configuring results and returning the name, it is 
possible to return a result object:</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;">public Result runAction() {
+       ServletDispatcherResult result = new ServletDispatcherResult();
+       result.setLocation("input-form.jsp");
+       return result;
+}</pre>
+</div></div><p>&#160;</p><p>&#160;</p></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/result-types.html
==============================================================================
--- websites/production/struts/content/docs/result-types.html (original)
+++ websites/production/struts/content/docs/result-types.html Mon Feb 29 
19:38:05 2016
@@ -138,7 +138,7 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><p>Most use cases can be divided into 
two phases. First, we need to change or query the application's state, and then 
we need to present an updated view of the application. The Action class manages 
the application's state, and the Result Type manages the view.</p><h2 
id="ResultTypes-PredefinedResultTypes">Predefined Result Types</h2><p>The 
framework provides several implementations of the 
<code>com.opensymphony.xwork2.Result</code> interface, ready to use in your own 
applications.</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="chain-result.html">Chain 
Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used for 
<a shape="rect" href="action-chaining.html">Action 
Chaining</a></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" 
href="dispatcher-result.html">Dispatcher Result</a></p></td><td colspan="1
 " rowspan="1" class="confluenceTd"><p>Used for web resource integration, 
including <a shape="rect" href="jsp.html">JSP</a> 
integration</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" 
href="freemarker-result.html">FreeMarker Result</a></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Used for <a shape="rect" 
href="freemarker.html">FreeMarker</a> integration</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="httpheader-result.html">HttpHeader Result</a></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Used to control special HTTP 
behaviors</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="redirect-result.html">Redirect 
Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to 
redirect to another URL (web resource)</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="redirect-action-result.
 html">Redirect Action Result</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Used to redirect to another action 
mapping</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a 
shape="rect" href="stream-result.html">Stream Result</a></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Used to stream an InputStream 
back to the browser (usually for file downloads)</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="velocity-result.html">Velocity Result</a></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Used for <a shape="rect" 
href="velocity.html">Velocity</a> integration</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><a shape="rect" href="xsl-result.html">XSL 
Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used for 
XML/XSLT integration</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="plaintext-result.html">Pl
 ainText Result</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Used to display the raw content of a particular page 
(i.e jsp, HTML)</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="tiles-2-plugin.html">Tiles 2 
Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to 
provide Tiles 2 integration</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="tiles-3-plugin.html">Tiles 3 
Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to 
provide Tiles 3 integration</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="postback-result.html">Postback 
Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to 
postback request parameters as a form to the specified 
destination</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><a shape="rect" href="json-plugin.html">JSON 
Result</a></td><
 td colspan="1" rowspan="1" class="confluenceTd">Used to serialize actions into 
JSON</td></tr></tbody></table></div><h3 
id="ResultTypes-Optional">Optional</h3><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" 
href="jasperreports-plugin.html">JasperReports Plugin</a></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Used for <a shape="rect" 
href="jasperreports-tutorial.html">JasperReports Tutorial</a> 
integration</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Optional, third-party 
plugin</p></td></tr></tbody></table></div><p>Additional Result Types can be 
created and plugged into an application by implementing the 
<code>com.opensymphony.xwork2.Result</code> interface. Custom Result Types 
might include generating an email or JMS message, generating images, and so 
forth.</p><h2 id="ResultTypes-DefaultParameters">Default Parameters</h2><p>To 
minimize configuration, Results can be co
 nfigured with a single value, which will be converted into a parameter, and 
each Result can specify which parameter this value should be set as. For 
example, here is a result defined in XML that uses a default parameter:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+            <div id="ConfluenceContent"><p>Most use cases can be divided into 
two phases. First, we need to change or query the application's state, and then 
we need to present an updated view of the application. The Action class manages 
the application's state, and the Result Type manages the view.</p><h2 
id="ResultTypes-PredefinedResultTypes">Predefined Result Types</h2><p>The 
framework provides several implementations of the 
<code>com.opensymphony.xwork2.Result</code> interface, ready to use in your own 
applications.</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="chain-result.html">Chain 
Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used for 
<a shape="rect" href="action-chaining.html">Action 
Chaining</a></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" 
href="dispatcher-result.html">Dispatcher Result</a></p></td><td colspan="1
 " rowspan="1" class="confluenceTd"><p>Used for web resource integration, 
including <a shape="rect" href="jsp.html">JSP</a> 
integration</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" 
href="freemarker-result.html">FreeMarker Result</a></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Used for <a shape="rect" 
href="freemarker.html">FreeMarker</a> integration</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="httpheader-result.html">HttpHeader Result</a></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Used to control special HTTP 
behaviors</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="redirect-result.html">Redirect 
Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to 
redirect to another URL (web resource)</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="redirect-action-result.
 html">Redirect Action Result</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Used to redirect to another action 
mapping</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a 
shape="rect" href="stream-result.html">Stream Result</a></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Used to stream an InputStream 
back to the browser (usually for file downloads)</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="velocity-result.html">Velocity Result</a></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Used for <a shape="rect" 
href="velocity.html">Velocity</a> integration</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><a shape="rect" href="xsl-result.html">XSL 
Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used for 
XML/XSLT integration</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="plaintext-result.html">Pl
 ainText Result</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Used to display the raw content of a particular page 
(i.e jsp, HTML)</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="tiles-plugin.html">Tiles 2 
Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to 
provide Tiles 2 integration</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="tiles-3-plugin.html">Tiles 3 
Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to 
provide Tiles 3 integration</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="postback-result.html">Postback 
Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to 
postback request parameters as a form to the specified 
destination</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><a shape="rect" href="json-plugin.html">JSON 
Result</a></td><td
  colspan="1" rowspan="1" class="confluenceTd">Used to serialize actions into 
JSON</td></tr></tbody></table></div><h3 
id="ResultTypes-Optional">Optional</h3><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" 
href="jasperreports-plugin.html">JasperReports Plugin</a></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Used for <a shape="rect" 
href="jasperreports-tutorial.html">JasperReports Tutorial</a> 
integration</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Optional, third-party 
plugin</p></td></tr></tbody></table></div><p>Additional Result Types can be 
created and plugged into an application by implementing the 
<code>com.opensymphony.xwork2.Result</code> interface. Custom Result Types 
might include generating an email or JMS message, generating images, and so 
forth.</p><h2 id="ResultTypes-DefaultParameters">Default Parameters</h2><p>To 
minimize configuration, Results can be conf
 igured with a single value, which will be converted into a parameter, and each 
Result can specify which parameter this value should be set as. For example, 
here is a result defined in XML that uses a default parameter:</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 type="freemarker"&gt;foo.fm&lt;/result&gt;
 </pre>
 </div></div><p>That is the equivalent to this:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">

Modified: websites/production/struts/content/docs/s2-003.html
==============================================================================
--- websites/production/struts/content/docs/s2-003.html (original)
+++ websites/production/struts/content/docs/s2-003.html Mon Feb 29 19:38:05 2016
@@ -139,11 +139,11 @@ under the License.
 
 <p>So, for instance, to set #session.user to '0wn3d' the following parameter 
name can be used:</p>
 
-<p>('\u0023' + 'session<a shape="rect" class="createlink" 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&amp;title=%5C%27user%5C%27&amp;linkCreation=true&amp;fromPageId=88882";>\'user\'</a>')(unused)=0wn3d</p>
+<p>('\u0023' + 'session<a shape="rect" class="unresolved" 
href="#">\'user\'</a>')(unused)=0wn3d</p>
 
 <p>which will look as follows once URL encoded:</p>
 
-<p>('\u0023'%20%2b%20'session<a shape="rect" class="createlink" 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&amp;title=%5C%27user%5C%27&amp;linkCreation=true&amp;fromPageId=88882";>\'user\'</a>')(unused)=0wn3d
 </p>
+<p>('\u0023'%20%2b%20'session<a shape="rect" class="unresolved" 
href="#">\'user\'</a>')(unused)=0wn3d </p>
 
 <h2 id="S2-003-Solution">Solution</h2>
 

Added: websites/production/struts/content/docs/s2-027.html
==============================================================================
--- websites/production/struts/content/docs/s2-027.html (added)
+++ websites/production/struts/content/docs/s2-027.html Mon Feb 29 19:38:05 2016
@@ -0,0 +1,138 @@
+<!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>
+    <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>S2-027</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="security-bulletins.html">Security Bulletins</a>&nbsp;&gt;&nbsp;<a 
href="s2-027.html">S2-027</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">S2-027</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=61341645";>
+                <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=61341645";>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=61341645";>
+                <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=61341645";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=61341645";>
+                <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=61341645";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><h2 
id="S2-027-Summary">Summary</h2><code>TextParseUtil.translateVariables</code> 
does not filter malicious OGNL expressions<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</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>Remote Code Execution, when unsanitized 
user input is passed to the method by a developer</p></td></tr><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Maximum security 
rating</p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Low</p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Recommendation</p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Don't pass unsanitized input to the said method or 
ActionSupport's
  getText methods. An upgrade to <a shape="rect" class="external-link" 
href="http://struts.apache.org/download.cgi#struts23241";>Struts 2.3.24.1</a> is 
recommended.</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);">Struts 2.3.16.3</span></p></td></tr><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Reporter</p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Huawei PSIRT Team</p></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);">-</span></p></td></tr></tbody></table></div><h2 
id="S2-027-Problem">Problem</h2><p><code>TextParseUtil.translateVariables</code><span>
 evaluates a given String with OGNL. Before Struts 2.3.20, a specially crafted 
String incorporating ANTLR tooling can, when passed to sa
 id method, cause a remote code execution.</span></p><p><span>The Struts 2 
framework does not pass any user modifiable input to this method, neither 
directly nor indirectly. However, a developer crafting a Struts based web 
application might pass unsanitized user input to 
<span>TextParseUtil.translateVariables</span>&#160;or ActionSupport's getText 
methods. In that case a RCE exploitation might be possible.</span></p><h2 
id="S2-027-Solution">Solution</h2><ul><li>don't pass unsanitized user input to 
framework methods that include OGNL expression evaluation</li><li>upgrade to 
Struts 2.3.24.1. Since Struts 2.3.20 advanced filtering was applied to this and 
similar methods involving OGNL evaluation.</li></ul><p>&#160;</p></div>
+        </div>
+
+        
+    </div>
+</div>
+<div class="footer">
+    Generated by CXF SiteExporter
+</div>
+</body>
+</html>

Modified: websites/production/struts/content/docs/sample-announcements.html
==============================================================================
--- websites/production/struts/content/docs/sample-announcements.html (original)
+++ websites/production/struts/content/docs/sample-announcements.html Mon Feb 
29 19:38:05 2016
@@ -127,11 +127,11 @@ under the License.
         <div class="wiki-content">
             <div id="ConfluenceContent"><h1 
id="Sampleannouncements-Content">Content</h1>
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1453884616256 {padding: 0px;}
-div.rbtoc1453884616256 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1453884616256 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1456773755099 {padding: 0px;}
+div.rbtoc1456773755099 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1456773755099 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1453884616256">
+/*]]>*/</style><div class="toc-macro rbtoc1456773755099">
 <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" href="#Sampleannouncements-Content">Content</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a 
shape="rect" 
href="#Sampleannouncements-SampleStrutsAnnotationsRelease/QualityVote">Sample 
Struts Annotations Release/Quality Vote</a></li><li><span 
class="TOCOutline">1.2</span> <a shape="rect" 
href="#Sampleannouncements-SampleTestBuildAnnouncement">Sample Test Build 
Announcement</a></li><li><span class="TOCOutline">1.3</span> <a shape="rect" 
href="#Sampleannouncements-SampleRelease/QualityVote">Sample Release/Quality 
Vote</a></li><li><span class="TOCOutline">1.4</span> <a shape="rect" 
href="#Sampleannouncements-SampleReleaseAnnouncement">Sample Release 
Announcement</a></li><li><span class="TOCOutline">1.5</span> <a shape="rect" 
href="#Sampleannouncements-Fast-TrackinganImportantSecurityRelease">Fast-Tracking
 an Important Security Release</a></li></ul>
 </li></ul>


Reply via email to