Modified: websites/production/struts/content/docs/security.html
==============================================================================
--- websites/production/struts/content/docs/security.html (original)
+++ websites/production/struts/content/docs/security.html Tue Aug 25 07:18:20 
2015
@@ -138,14 +138,14 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><h3 
id="Security-/*&lt;![CDATA[*/div.rbtoc1438274444920{padding:0px;}div.rbtoc1438274444920ul{list-style:disc;margin-left:0px;}div.rbtoc1438274444920li{margin-left:0px;padding-left:0px;}/*]]&gt;*/#Security-Securitytips#Security-SecuritytipsRestrictaccesstotheConfigBrow"><style
 type="text/css">/*<![CDATA[*/
-div.rbtoc1438274444920 {padding: 0px;}
-div.rbtoc1438274444920 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1438274444920 li {margin-left: 0px;padding-left: 0px;}
+            <div id="ConfluenceContent"><h3 
id="Security-/*&lt;![CDATA[*/div.rbtoc1440486694001{padding:0px;}div.rbtoc1440486694001ul{list-style:disc;margin-left:0px;}div.rbtoc1440486694001li{margin-left:0px;padding-left:0px;}/*]]&gt;*/#Security-Securitytips#Security-SecuritytipsRestrictaccesstotheConfigBrow"><style
 type="text/css">/*<![CDATA[*/
+div.rbtoc1440486694001 {padding: 0px;}
+div.rbtoc1440486694001 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1440486694001 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></h3><div class="toc-macro rbtoc1438274444920">
+/*]]>*/</style></h3><div class="toc-macro rbtoc1440486694001">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Security-"></a></li><li><a shape="rect" 
href="#Security-Securitytips">Security tips</a>
-<ul class="toc-indentation"><li><a shape="rect" 
href="#Security-RestrictaccesstotheConfigBrowser">Restrict access to the Config 
Browser</a></li><li><a shape="rect" 
href="#Security-Don'tmixdifferentaccesslevelsinthesamenamespace">Don't mix 
different access levels in the same namespace</a></li><li><a shape="rect" 
href="#Security-NeverexposeJSPfilesdirectly">Never expose JSP files 
directly</a></li></ul>
+<ul class="toc-indentation"><li><a shape="rect" 
href="#Security-RestrictaccesstotheConfigBrowser">Restrict access to the Config 
Browser</a></li><li><a shape="rect" 
href="#Security-Don'tmixdifferentaccesslevelsinthesamenamespace">Don't mix 
different access levels in the same namespace</a></li><li><a shape="rect" 
href="#Security-NeverexposeJSPfilesdirectly">Never expose JSP files 
directly</a></li><li><a shape="rect" href="#Security-DisabledevMode">Disable 
devMode</a></li></ul>
 </li><li><a shape="rect" href="#Security-Internalsecuritymechanism">Internal 
security mechanism</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Security-Accessingstaticmethods">Accessing static methods</a></li><li><a 
shape="rect" href="#Security-OGNLisusedtocallaction'smethods">OGNL is used to 
call action's methods</a></li><li><a shape="rect" 
href="#Security-Accepted/Excludedpatterns">Accepted / Excluded 
patterns</a></li></ul>
 </li></ul>
@@ -177,7 +177,7 @@ div.rbtoc1438274444920 li {margin-left:
     &lt;description&gt;Don't assign users to this role&lt;/description&gt;
     &lt;role-name&gt;no-users&lt;/role-name&gt;
 &lt;/security-role&gt;</pre>
-</div></div><p>The best approach is to used the both solutions.</p><h3 
id="Security-Internalsecuritymechanism">Internal security mechanism</h3><p>The 
Apache Struts 2 contains internal security manager which blocks access to 
particular classes and Java packages - it's a OGNL-wide mechanism which means 
it affects any aspect of the framework ie. incoming parameters, expressions 
used in JSPs, etc.</p><p>The defaults are as follow:</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>The best approach is to used the both solutions.</p><h4 
id="Security-DisabledevMode">Disable devMode</h4><p>The&#160;<code 
style="line-height: 1.4285715;">devMode</code> is very useful option back can 
expose your application presenting too many informations of application's 
internals. Please always disable the&#160;<code>devMode</code> before deploying 
your application to a production environment.</p><h3 
id="Security-Internalsecuritymechanism">Internal security mechanism</h3><p>The 
Apache Struts 2 contains internal security manager which blocks access to 
particular classes and Java packages - it's a OGNL-wide mechanism which means 
it affects any aspect of the framework ie. incoming parameters, expressions 
used in JSPs, etc.</p><p>The defaults are as follow:</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">    &lt;constant name="struts.excludedClasses"
               value="
                 java.lang.Object,

Modified: websites/production/struts/content/docs/short-validator.html
==============================================================================
--- websites/production/struts/content/docs/short-validator.html (original)
+++ websites/production/struts/content/docs/short-validator.html Tue Aug 25 
07:18:20 2015
@@ -139,16 +139,49 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><h1 
id="shortvalidator-Description">Description</h1>
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p>Field Validator that checks if the short specified is within a certain 
range.</p>
 
 <h1 id="shortvalidator-Parameters">Parameters</h1>
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p></p><ul><li>fieldName - The field name this validator is validating. 
Required if using Plain-Validator Syntax otherwise not required</li><li>min - 
the minimum value (if none is specified, it will not be checked) </li><li>max - 
the maximum value (if none is specified, it will not be checked) </li><li>parse 
- if set to true, minExpression and maxExpression will be evaluated to find 
min/max</li><li>minExpression - expression to calculate the minimum value (if 
none is specified, it will not be checked) </li><li>maxExpression - expression 
to calculate the maximum value (if none is specified, it will not be checked) 
</li></ul>
+
+<p>You can either use the min / max value or minExpression / maxExpression 
(when parse is set to true) -
+using expression can be slightly slower, see the example below.</p>
 
 <div class="confluence-information-macro 
confluence-information-macro-warning"><p class="title">Warning</p><span 
class="aui-icon aui-icon-small aui-iconfont-error 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> 
</div></div></div>
+<p>Do not use ${minExpression} and ${maxExpression} as an expression as this 
will turn into infinitive loop!</p></div></div>
 
 <h1 id="shortvalidator-Examples">Examples</h1>
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </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;validators&gt;
+     &lt;!-- Plain Validator Syntax --&gt;
+     &lt;validator type=&quot;short&quot;&gt;
+         &lt;param name=&quot;fieldName&quot;&gt;age&lt;/param&gt;
+         &lt;param name=&quot;min&quot;&gt;20&lt;/param&gt;
+         &lt;param name=&quot;max&quot;&gt;50&lt;/param&gt;
+         &lt;message&gt;Age needs to be between ${min} and 
${max}&lt;/message&gt;
+     &lt;/validator&gt;
+
+     &lt;!-- Field Validator Syntax --&gt;
+     &lt;field name=&quot;age&quot;&gt;
+         &lt;field-validator type=&quot;short&quot;&gt;
+             &lt;param name=&quot;min&quot;&gt;20&lt;/param&gt;
+             &lt;param name=&quot;max&quot;&gt;50&lt;/param&gt;
+             &lt;message&gt;Age needs to be between ${min} and 
${max}&lt;/message&gt;
+         &lt;/field-validator&gt;
+     &lt;/field&gt;
+
+     &lt;!-- Field Validator Syntax with expression --&gt;
+     &lt;field name=&quot;age&quot;&gt;
+         &lt;field-validator type=&quot;short&quot;&gt;
+             &lt;param 
name=&quot;minExpression&quot;&gt;${minValue}&lt;/param&gt; &lt;!-- will be 
evaluated as: Short getMinValue() --&gt;
+             &lt;param 
name=&quot;maxExpression&quot;&gt;${maxValue}&lt;/param&gt; &lt;!-- will be 
evaluated as: Short getMaxValue() --&gt;
+             &lt;message&gt;Age needs to be between ${min} and 
${max}&lt;/message&gt;
+         &lt;/field-validator&gt;
+     &lt;/field&gt;
+ &lt;/validators&gt;
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: 
websites/production/struts/content/docs/static-parameters-interceptor.html
==============================================================================
--- websites/production/struts/content/docs/static-parameters-interceptor.html 
(original)
+++ websites/production/struts/content/docs/static-parameters-interceptor.html 
Tue Aug 25 07:18:20 2015
@@ -138,19 +138,39 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><div class="error"><span 
class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+            <div id="ConfluenceContent">
+<p>This interceptor populates the action with the static parameters defined in 
the action configuration. If the action
+implements Parameterizable, a map of the static parameters will be also be 
passed directly to the action.
+The static params will be added to the request params map, unless "merge" is 
set to false.</p>
+
+<p></p><p> Parameters are typically defined with &lt;param&gt; elements within 
xwork.xml.</p>
+
 
 <h2 id="StaticParametersInterceptor-Parameters">Parameters</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+
+<p></p><ul></ul><p></p><ul><li>None</li></ul><p></p>
+
 
 <h2 id="StaticParametersInterceptor-ExtendingtheInterceptor">Extending the 
Interceptor</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+
+<p></p><p>There are no extension points to this interceptor.</p>
+
 
 <h2 id="StaticParametersInterceptor-Examples">Examples</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </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;action name=&quot;someAction&quot; 
class=&quot;com.examples.SomeAction&quot;&gt;
+    &lt;interceptor-ref name=&quot;staticParams&quot;&gt;
+         &lt;param name=&quot;parse&quot;&gt;true&lt;/param&gt;
+         &lt;param name=&quot;overwrite&quot;&gt;false&lt;/param&gt;
+    &lt;/interceptor-ref&gt;
+    &lt;result name=&quot;success&quot;&gt;good_result.ftl&lt;/result&gt;
+&lt;/action&gt;
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/stringlength-validator.html
==============================================================================
--- websites/production/struts/content/docs/stringlength-validator.html 
(original)
+++ websites/production/struts/content/docs/stringlength-validator.html Tue Aug 
25 07:18:20 2015
@@ -139,16 +139,53 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><h1 
id="stringlengthvalidator-Description">Description</h1>
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p>StringLengthFieldValidator checks that a String field is of a certain 
length.  If the "minLength"
+parameter is specified, it will make sure that the String has at least that 
many characters.  If
+the "maxLength" parameter is specified, it will make sure that the String has 
at most that many
+characters.  The "trim" parameter determines whether it will {@link 
String#trim() trim} the
+String before performing the length check.  If unspecified, the String will be 
trimmed.</p>
 
 <h1 id="stringlengthvalidator-Parameters">Parameters</h1>
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p></p><ul><li>fieldName - The field name this validator is validating. 
Required if using Plain-Validator Syntax otherwise not 
required</li><li>maxLength - Integer. The max length of the field value. 
Default ignore.</li><li>minLength - Integer. The min length of the field value. 
Default ignore.</li><li>trim - (Optional) Boolean, default true. Trim the field 
value before evaluating its min/max length. Default 
true.</li><li>maxLengthExpression - (Optional) String. Defines the max length 
param as an OGNL expression</li><li>minLengthExpression - (Optional) String. 
Defines the min length param as an OGNL expression</li><li>trimExpression - 
(Optional) String. Defines th trim param as an OGNL expression</li></ul>
 
 <div class="confluence-information-macro 
confluence-information-macro-warning"><p class="title">Warning</p><span 
class="aui-icon aui-icon-small aui-iconfont-error 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> 
</div></div></div>
+<p>Do not use ${minLengthExpression}, ${maxLengthExpression} and 
${trimExpression} as an expression as this will turn into infinitive 
loop!</p></div></div>
 
 <h1 id="stringlengthvalidator-Examples">Examples</h1>
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </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;validators&gt;
+    &lt;!-- Plain Validator Syntax --&gt;
+    &lt;validator type=&quot;stringlength&quot;&gt;
+        &lt;param name=&quot;fieldName&quot;&gt;myPurchaseCode&lt;/param&gt;
+        &lt;param name=&quot;minLength&quot;&gt;10&lt;/param&gt;
+        &lt;param name=&quot;maxLength&quot;&gt;10&lt;/param&gt;
+        &lt;param name=&quot;trim&quot;&gt;true&lt;/param&gt;
+        &lt;message&gt;Your purchase code needs to be 10 characters 
long&lt;/message&gt;
+    &lt;/validator&gt;
+
+    &lt;!-- Field Validator Syntax --&gt;
+    &lt;field name=&quot;myPurchaseCode&quot;&gt;
+        &lt;field-validator type=&quot;stringlength&quot;&gt;
+             &lt;param name=&quot;minLength&quot;&gt;10&lt;/param&gt;
+             &lt;param name=&quot;maxLength&quot;&gt;10&lt;/param&gt;
+             &lt;param name=&quot;trim&quot;&gt;true&lt;/param&gt;
+             &lt;message&gt;Your purchase code needs to be 10 characters 
long&lt;/message&gt;
+        &lt;/field-validator&gt;
+    &lt;/field&gt;
+
+    &lt;!-- Field Validator Syntax with expression --&gt;
+    &lt;field name=&quot;myPurchaseCode&quot;&gt;
+        &lt;field-validator type=&quot;stringlength&quot;&gt;
+             &lt;param 
name=&quot;minLengthExpression&quot;&gt;${minLengthValue}&lt;/param&gt; &lt;!-- 
will be evaluated as: Integer getMinLengthValue() --&gt;
+             &lt;param 
name=&quot;maxLengthExpression&quot;&gt;${maxLengthValue}&lt;/param&gt; &lt;!-- 
will be evaluated as: Integer getMaxLengthValue() --&gt;
+             &lt;param 
name=&quot;trimExpression&quot;&gt;${trimValue}&lt;/param&gt; &lt;!-- will be 
evaluated as: boolean getTrimValue() --&gt;
+             &lt;message&gt;Your purchase code needs to be 10 characters 
long&lt;/message&gt;
+        &lt;/field-validator&gt;
+    &lt;/field&gt;
+&lt;/validators&gt;
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: 
websites/production/struts/content/docs/stringlengthfieldvalidator-annotation.html
==============================================================================
--- 
websites/production/struts/content/docs/stringlengthfieldvalidator-annotation.html
 (original)
+++ 
websites/production/struts/content/docs/stringlengthfieldvalidator-annotation.html
 Tue Aug 25 07:18:20 2015
@@ -138,19 +138,27 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><div class="error"><span 
class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+            <div id="ConfluenceContent"><p>This validator checks that a String 
field is of the right length. It assumes that the field is a String.
+If neither minLength nor maxLength is set, nothing will be done.</p>
 
 <h2 id="StringLengthFieldValidatorAnnotation-Usage">Usage</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p></p><p>The annotation must be applied at method level.</p>
 
 <h2 id="StringLengthFieldValidatorAnnotation-Parameters">Parameters</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p><table class="confluenceTable" summary=""><tr><th colspan="1" rowspan="1" 
class="confluenceTh"> Parameter </th><th colspan="1" rowspan="1" 
class="confluenceTh"> Required </th><th colspan="1" rowspan="1" 
class="confluenceTh"> Default </th><th colspan="1" rowspan="1" 
class="confluenceTh"> Notes </th></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd">message</td><td colspan="1" rowspan="1" 
class="confluenceTd">yes</td><td colspan="1" rowspan="1" 
class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" 
class="confluenceTd">field error message</td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd">key</td><td colspan="1" rowspan="1" 
class="confluenceTd">no</td><td colspan="1" rowspan="1" 
class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" 
class="confluenceTd">i18n key from language specific properties 
file.</td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd">messageParams</td><td colspan="1" rowspan="1" 
class="confluenceTd">no</td><td colspan="1" row
 span="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" 
class="confluenceTd">Additional params to be used to customize message - will 
be evaluated against the Value Stack</td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd">fieldName</td><td colspan="1" rowspan="1" 
class="confluenceTd">no</td><td colspan="1" rowspan="1" 
class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" 
class="confluenceTd">&#160;</td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd">shortCircuit</td><td colspan="1" rowspan="1" 
class="confluenceTd">no</td><td colspan="1" rowspan="1" 
class="confluenceTd">false</td><td colspan="1" rowspan="1" 
class="confluenceTd">If this validator should be used as 
shortCircuit.</td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd">type</td><td colspan="1" rowspan="1" 
class="confluenceTd">yes</td><td colspan="1" rowspan="1" 
class="confluenceTd">ValidatorType.FIELD</td><td colspan="1" rowspan="1" 
class="confluenceTd">Enum value from Valida
 torType. Either FIELD or SIMPLE can be used here.</td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"> trim </td><td colspan="1" rowspan="1" 
class="confluenceTd"> no </td><td colspan="1" rowspan="1" class="confluenceTd"> 
true </td><td colspan="1" rowspan="1" class="confluenceTd"> Boolean property.  
Determines whether the String is trimmed before performing the length check.  
</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> minLength 
</td><td colspan="1" rowspan="1" class="confluenceTd"> no </td><td colspan="1" 
rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" 
class="confluenceTd"> Integer property.  The minimum length the String must be. 
</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> 
minLengthExpression </td><td colspan="1" rowspan="1" class="confluenceTd"> no 
</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td 
colspan="1" rowspan="1" class="confluenceTd">OGNL expression used to obtain the 
minimum lengt
 h the String must be. </td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"> maxLength </td><td colspan="1" rowspan="1" 
class="confluenceTd"> no </td><td colspan="1" rowspan="1" 
class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" 
class="confluenceTd"> Integer property.  The maximum length the String can be. 
</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> 
maxLengthExpression </td><td colspan="1" rowspan="1" class="confluenceTd"> no 
</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td 
colspan="1" rowspan="1" class="confluenceTd">OGNL expression used to obtain the 
maximum length the String can be. </td></tr></table></p>
+
+<p></p><p>If neither <em>minLength</em> nor <em>maxLength</em> is set, nothing 
will be done.</p>
+
 
 <h2 id="StringLengthFieldValidatorAnnotation-Examples">Examples</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div></div>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+@StringLengthFieldValidator(message = &quot;Default message&quot;, key = 
&quot;i18n.key&quot;, shortCircuit = true, trim = true, minLength = 
&quot;5&quot;,  maxLength = &quot;12&quot;)
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/struts-2-blank-archetype.html
==============================================================================
--- websites/production/struts/content/docs/struts-2-blank-archetype.html 
(original)
+++ websites/production/struts/content/docs/struts-2-blank-archetype.html Tue 
Aug 25 07:18:20 2015
@@ -149,11 +149,11 @@ under the License.
 <p><strong>Contents</strong></p>
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1438274335116 {padding: 0px;}
-div.rbtoc1438274335116 ul {list-style: none;margin-left: 0px;padding-left: 
1em;}
-div.rbtoc1438274335116 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1440486562322 {padding: 0px;}
+div.rbtoc1440486562322 ul {list-style: none;margin-left: 0px;padding-left: 
1em;}
+div.rbtoc1440486562322 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1438274335116">
+/*]]>*/</style><div class="toc-macro rbtoc1440486562322">
 <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" 
href="#Struts2BlankArchetype-CreatingOurblank-archetypeProject">Creating Our 
blank-archetype Project</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a 
shape="rect" href="#Struts2BlankArchetype-Stagingrepository">Staging 
repository</a></li></ul>
 </li><li><span class="TOCOutline">2</span> <a shape="rect" 
href="#Struts2BlankArchetype-ProjectStructure">Project Structure</a>

Modified: websites/production/struts/content/docs/struts-2-maven-archetypes.html
==============================================================================
--- websites/production/struts/content/docs/struts-2-maven-archetypes.html 
(original)
+++ websites/production/struts/content/docs/struts-2-maven-archetypes.html Tue 
Aug 25 07:18:20 2015
@@ -143,11 +143,11 @@ under the License.
 <p><strong>Contents</strong></p>
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1438274332141 {padding: 0px;}
-div.rbtoc1438274332141 ul {list-style: none;margin-left: 0px;padding-left: 
1em;}
-div.rbtoc1438274332141 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1440486563546 {padding: 0px;}
+div.rbtoc1440486563546 ul {list-style: none;margin-left: 0px;padding-left: 
1em;}
+div.rbtoc1440486563546 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1438274332141">
+/*]]>*/</style><div class="toc-macro rbtoc1440486563546">
 <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" 
href="#Struts2MavenArchetypes-Quickstart">Quickstart</a></li><li><span 
class="TOCOutline">2</span> <a shape="rect" 
href="#Struts2MavenArchetypes-AvailableArchetypes">Available Archetypes</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">2.1</span> <a 
shape="rect" 
href="#Struts2MavenArchetypes-TheBlankConventionArchetype(struts2-archetype-convention)">The
 Blank Convention Archetype (struts2-archetype-convention)</a></li><li><span 
class="TOCOutline">2.2</span> <a shape="rect" 
href="#Struts2MavenArchetypes-TheBlankArchetype(struts2-archetype-blank)">The 
Blank Archetype (struts2-archetype-blank)</a></li><li><span 
class="TOCOutline">2.3</span> <a shape="rect" 
href="#Struts2MavenArchetypes-TheStarterArchetype(struts2-archetype-starter)">The
 Starter Archetype (struts2-archetype-starter)</a></li><li><span 
class="TOCOutline">2.4</span> <a shape="rect" 
href="#Struts2MavenArchetypes-TheAngularJSArchetype(struts2-archetype-angularjs)">The
 AngularJS Archetype (struts2-archetype-angularjs)</a></li><li><span 
class="TOCOutline">2.5</span> <a shape="rect" 
href="#Struts2MavenArchetypes-ThePortletBlankArchetype(struts2-archetype-portlet)">The
 Portlet Blank Archetype (struts2-ar
 chetype-portlet)</a></li><li><span class="TOCOutline">2.6</span> <a 
shape="rect" 
href="#Struts2MavenArchetypes-ThePortletDatabaseArchetype(struts2-archetype-dbportlet)">The
 Portlet Database Archetype (struts2-archetype-dbportlet)</a></li><li><span 
class="TOCOutline">2.7</span> <a shape="rect" 
href="#Struts2MavenArchetypes-ThePluginArchetype(struts2-archetype-plugin)">The 
Plugin Archetype (struts2-archetype-plugin)</a></li></ul>
 </li><li><span class="TOCOutline">3</span> <a shape="rect" 
href="#Struts2MavenArchetypes-CreatinganApplicationUsingaMavenArchetype">Creating
 an Application Using a Maven Archetype</a>

Modified: 
websites/production/struts/content/docs/struts-2-spring-2-jpa-ajax.html
==============================================================================
--- websites/production/struts/content/docs/struts-2-spring-2-jpa-ajax.html 
(original)
+++ websites/production/struts/content/docs/struts-2-spring-2-jpa-ajax.html Tue 
Aug 25 07:18:20 2015
@@ -145,11 +145,11 @@ under the License.
 <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>Following this tutorial verbatim 
will require use of a Struts 2 deployment greater than 2.0.3</p></div></div>
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1438274224300 {padding: 0px;}
-div.rbtoc1438274224300 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1438274224300 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1440486429793 {padding: 0px;}
+div.rbtoc1440486429793 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1440486429793 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1438274224300">
+/*]]>*/</style><div class="toc-macro rbtoc1440486429793">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Struts2+Spring2+JPA+AJAX-Prerequisites">Prerequisites</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Struts2+Spring2+JPA+AJAX-Tomcat">Tomcat</a></li><li><a shape="rect" 
href="#Struts2+Spring2+JPA+AJAX-MySql">MySql</a></li></ul>
 </li><li><a shape="rect" href="#Struts2+Spring2+JPA+AJAX-Getthecode">Get the 
code</a>

Modified: websites/production/struts/content/docs/struts-next.html
==============================================================================
--- websites/production/struts/content/docs/struts-next.html (original)
+++ websites/production/struts/content/docs/struts-next.html Tue Aug 25 
07:18:20 2015
@@ -125,12 +125,12 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><h3 
id="StrutsNext-/*&lt;![CDATA[*/div.rbtoc1438274394124{padding:0px;}div.rbtoc1438274394124ul{list-style:disc;margin-left:0px;}div.rbtoc1438274394124li{margin-left:0px;padding-left:0px;}/*]]&gt;*/#StrutsNext-Whatshouldbeimproved/changed#StrutsNext-Whatshouldbeimprove"><style
 type="text/css">/*<![CDATA[*/
-div.rbtoc1438274394124 {padding: 0px;}
-div.rbtoc1438274394124 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1438274394124 li {margin-left: 0px;padding-left: 0px;}
+            <div id="ConfluenceContent"><h3 
id="StrutsNext-/*&lt;![CDATA[*/div.rbtoc1440486666365{padding:0px;}div.rbtoc1440486666365ul{list-style:disc;margin-left:0px;}div.rbtoc1440486666365li{margin-left:0px;padding-left:0px;}/*]]&gt;*/#StrutsNext-Whatshouldbeimproved/changed#StrutsNext-Whatshouldbeimprove"><style
 type="text/css">/*<![CDATA[*/
+div.rbtoc1440486666365 {padding: 0px;}
+div.rbtoc1440486666365 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1440486666365 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></h3><div class="toc-macro rbtoc1438274394124">
+/*]]>*/</style></h3><div class="toc-macro rbtoc1440486666365">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#StrutsNext-"></a></li></ul>
 <ul><li><a shape="rect" href="#StrutsNext-Whatshouldbeimproved/changed">What 
should be improved / changed</a></li><li><a shape="rect" 
href="#StrutsNext-DevelopmentplanofStruts3">Development plan of Struts 3</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#StrutsNext-M1(akaStruts2.5)">M1 (aka Struts 2.5)</a></li><li><a 
shape="rect" href="#StrutsNext-M2(alphaStruts3)">M2 (alpha Struts 
3)</a></li><li><a shape="rect" href="#StrutsNext-M3(alphaStruts3)">M3 (alpha 
Struts 3)</a></li><li><a shape="rect" href="#StrutsNext-M4(beta1Struts3)">M4 
(beta 1 Struts 3)</a></li></ul>

Modified: websites/production/struts/content/docs/struts-tags.html
==============================================================================
--- websites/production/struts/content/docs/struts-tags.html (original)
+++ websites/production/struts/content/docs/struts-tags.html Tue Aug 25 
07:18:20 2015
@@ -129,7 +129,7 @@ under the License.
 
 <p>The types of tags can be broken in to two types: generic and UI. Besides 
function and responsibility, the biggest difference between the two is that the 
HTML tags support <em>templates</em> and <em>themes</em>. In addition to the 
general tag reference, we also provide examples for using these generic tags in 
each of the support languages.</p>
 
-<p><img class="emoticon emoticon-tick" 
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/check.png";
 data-emoticon-name="tick" alt="(tick)"> Be sure to read the <a shape="rect" 
href="tag-syntax.html">Tag Syntax</a> document to learn how tag attribute 
syntax works.</p>
+<p><img class="emoticon emoticon-tick" 
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png";
 data-emoticon-name="tick" alt="(tick)"> Be sure to read the <a shape="rect" 
href="tag-syntax.html">Tag Syntax</a> document to learn how tag attribute 
syntax works.</p>
 
 <h2 id="StrutsTags-FAQs">FAQs </h2>
 

Modified: websites/production/struts/content/docs/themes-and-templates.html
==============================================================================
--- websites/production/struts/content/docs/themes-and-templates.html (original)
+++ websites/production/struts/content/docs/themes-and-templates.html Tue Aug 
25 07:18:20 2015
@@ -131,7 +131,7 @@ under the License.
 
 <div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p> tag </p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p> A small piece of code executed from within 
<a shape="rect" href="jsp.html">JSP</a>, <a shape="rect" 
href="freemarker.html">FreeMarker</a>, or <a shape="rect" 
href="velocity.html">Velocity</a>. </p></td></tr><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p> template </p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p> A bit of code, usually written in <a 
shape="rect" href="freemarker.html">FreeMarker</a>, that can be rendered by 
certain tags (HTML tags) </p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p> theme </p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p> A  collection of <em>templates</em> packaged together 
to provide common functionality </p></td></tr></tbody></table></div>
 
-<p><img class="emoticon emoticon-light-on" 
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/lightbulb_on.png";
 data-emoticon-name="light-on" alt="(lightbulb)"> See <a shape="rect" 
href="struts-tags.html">Struts Tags</a> for more about the HTML and other tags 
provided by the framework.</p>
+<p><img class="emoticon emoticon-light-on" 
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/lightbulb_on.png";
 data-emoticon-name="light-on" alt="(lightbulb)"> See <a shape="rect" 
href="struts-tags.html">Struts Tags</a> for more about the HTML and other tags 
provided by the framework.</p>
 
 <h2 id="ThemesandTemplates-TemplateBasics">Template Basics</h2>
 

Modified: websites/production/struts/content/docs/timer-interceptor.html
==============================================================================
--- websites/production/struts/content/docs/timer-interceptor.html (original)
+++ websites/production/struts/content/docs/timer-interceptor.html Tue Aug 25 
07:18:20 2015
@@ -138,19 +138,44 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><div class="error"><span 
class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+            <div id="ConfluenceContent"><p>This interceptor logs the amount of 
time in milliseconds. In order for this interceptor to work properly, the
+logging framework must be set to at least the <tt>INFO</tt> level.
+This interceptor relies on the <a shape="rect" 
href="http://jakarta.apache.org/commons/logging/";>Commons Logging API</a> to
+report its execution-time value.</p>
 
 <h2 id="TimerInterceptor-Parameters">Parameters</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+
+<p></p><ul></ul><p></p><ul><li>logLevel (optional) - what log level should we 
use (<code>trace, debug, info, warn, error, fatal</code>)? - defaut is 
<code>info</code></li></ul><p></p><ul><li>logCategory (optional) - If provided 
we would use this category (eg. <code>com.mycompany.app</code>).
+Default is to use 
<code>com.opensymphony.xwork2.interceptor.TimerInterceptor</code>.</li></ul><p></p>
+
+<p>The parameters above enables us to log all action execution times in our 
own logfile.</p>
+
 
 <h2 id="TimerInterceptor-ExtendingtheInterceptor">Extending the 
Interceptor</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p>This interceptor can be extended to provide custom message format. Users 
should override the
+<code>invokeUnderTiming</code> method.</p>
 
 <h2 id="TimerInterceptor-Examples">Examples</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </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;!-- records only the action&#39;s execution time --&gt;
+&lt;action name=&quot;someAction&quot; 
class=&quot;com.examples.SomeAction&quot;&gt;
+    &lt;interceptor-ref name=&quot;completeStack&quot;/&gt;
+    &lt;interceptor-ref name=&quot;timer&quot;/&gt;
+    &lt;result name=&quot;success&quot;&gt;good_result.ftl&lt;/result&gt;
+&lt;/action&gt;
+
+&lt;!-- records action&#39;s execution time as well as other interceptors--&gt;
+&lt;action name=&quot;someAction&quot; 
class=&quot;com.examples.SomeAction&quot;&gt;
+    &lt;interceptor-ref name=&quot;timer&quot;/&gt;
+    &lt;interceptor-ref name=&quot;completeStack&quot;/&gt;
+    &lt;result name=&quot;success&quot;&gt;good_result.ftl&lt;/result&gt;
+&lt;/action&gt;
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/type-conversion.html
==============================================================================
--- websites/production/struts/content/docs/type-conversion.html (original)
+++ websites/production/struts/content/docs/type-conversion.html Tue Aug 25 
07:18:20 2015
@@ -141,11 +141,11 @@ under the License.
             <div id="ConfluenceContent"><p>Routine type conversion in the 
framework is transparent. Generally, all you need to do is ensure that HTML 
inputs have names that can be used in <a shape="rect" href="ognl.html">OGNL</a> 
expressions. (HTML inputs are form elements and other GET/POST parameters.)</p>
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1438273942175 {padding: 0px;}
-div.rbtoc1438273942175 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1438273942175 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1440486120543 {padding: 0px;}
+div.rbtoc1440486120543 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1440486120543 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1438273942175">
+/*]]>*/</style><div class="toc-macro rbtoc1440486120543">
 <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" href="#TypeConversion-BuiltinTypeConversionSupport">Built in Type 
Conversion Support</a></li><li><span class="TOCOutline">2</span> <a 
shape="rect" href="#TypeConversion-RelationshiptoParameterNames">Relationship 
to Parameter Names</a></li><li><span class="TOCOutline">3</span> <a 
shape="rect" href="#TypeConversion-CreatingaTypeConverter">Creating a Type 
Converter</a></li><li><span class="TOCOutline">4</span> <a shape="rect" 
href="#TypeConversion-ApplyingaTypeConvertertoanAction">Applying a Type 
Converter to an Action</a></li><li><span class="TOCOutline">5</span> <a 
shape="rect" 
href="#TypeConversion-ApplyingaTypeConvertertoabeanormodel">Applying a Type 
Converter to a bean or model</a></li><li><span class="TOCOutline">6</span> <a 
shape="rect" 
href="#TypeConversion-ApplyingaTypeConverterforanapplication">Applying a Type 
Converter for an application</a></li><li><span class="TOCOutline">7</span> <a 
shape="r
 ect" href="#TypeConversion-ASimpleExample">A Simple Example</a></li><li><span 
class="TOCOutline">8</span> <a shape="rect" 
href="#TypeConversion-AdvancedTypeConversion">Advanced Type Conversion</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">8.1</span> <a 
shape="rect" href="#TypeConversion-NullPropertyHandling">Null Property 
Handling</a></li><li><span class="TOCOutline">8.2</span> <a shape="rect" 
href="#TypeConversion-CollectionandMapSupport">Collection and Map Support</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">8.2.1</span> <a 
shape="rect" 
href="#TypeConversion-Indexingacollectionbyapropertyofthatcollection">Indexing 
a collection by a property of that collection</a></li></ul>
@@ -157,7 +157,19 @@ div.rbtoc1438273942175 li {margin-left:
 
 <h2 id="TypeConversion-BuiltinTypeConversionSupport">Built in Type Conversion 
Support</h2>
 <p>Type Conversion is implemented by XWork.</p>
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p></p><p>
+XWork will automatically handle the most common type conversion for you. This 
includes support for converting to
+and from Strings for each of the following:
+</p>
+
+<p></p><ul><li>String</li><li>boolean / Boolean</li><li>char / 
Character</li><li>int / Integer, float / Float, long / Long, double / 
Double</li><li>dates - uses the SHORT format for the Locale associated with the 
current request</li><li>arrays - assuming the individual strings can be 
coverted to the individual items</li><li>collections - if not object type can 
be determined, it is assumed to be a String and a new ArrayList is
+created</li></ul>
+
+<p></p><p> Note that with arrays the type conversion will defer to the type of 
the array elements and try to convert each
+item individually. As with any other type conversion, if the conversion can't 
be performed the standard type
+conversion error reporting is used to indicate a problem occurred while 
processing the type conversion.
+</p>
+
 <ul><li>Enumerations</li><li>BigDecimal and BigInteger</li></ul>
 
 
@@ -233,9 +245,51 @@ java.math.BigDecimal = com.acme.MyBigDec
 
 <h2 id="TypeConversion-ASimpleExample">A Simple Example</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+
+<p></p><p>
+Type conversion is great for situations where you need to turn a String in to 
a more complex object. Because the web
+is type-agnostic (everything is a string in HTTP), Struts 2's type conversion 
features are very useful. For instance,
+if you were prompting a user to enter in coordinates in the form of a string 
(such as "3, 22"), you could have
+Struts 2 do the conversion both from String to Point and from Point to String.
+</p>
+
+<p></p><p>
+Using this "point" example, if your action (or another compound object in 
which you are setting properties on)
+has a corresponding ClassName-conversion.properties file, Struts 2 will use 
the configured type converters for
+conversion to and from strings. So turning "3, 22" in to new Point(3, 22) is 
done by merely adding the following
+entry to <b>ClassName-conversion.properties</b> (Note that the PointConverter 
should impl the TypeConverter
+interface):
+</p>
+<p><b>point = com.acme.PointConverter</b></p>
+
+<p></p><p>
+Your type converter should be sure to check what class type it is being 
requested to convert. Because it is used
+for both to and from strings, you will need to split the conversion method in 
to two parts: one that turns Strings in
+to Points, and one that turns Points in to Strings.
+</p>
+
+<p></p><p>
+After this is done, you can now reference your point (using &lt;s:property 
value="point"/&gt; in JSP or ${point}
+in FreeMarker) and it will be printed as "3, 22" again. As such, if you submit 
this back to an action, it will be
+converted back to a Point once again.
+</p>
+
+<p></p><p>
+In some situations you may wish to apply a type converter globally. This can 
be done by editing the file
+<b>xwork-conversion.properties</b> in the root of your class path (typically 
WEB-INF/classes) and providing a
+property in the form of the class name of the object you wish to convert on 
the left hand side and the class name of
+the type converter on the right hand side. For example, providing a type 
converter for all Point objects would mean
+adding the following entry:
+</p>
+
+<p></p><p><b>com.acme.Point = com.acme.PointConverter</b></p>
+
 <div class="confluence-information-macro 
confluence-information-macro-note"><span class="aui-icon aui-icon-small 
aui-iconfont-warning confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> 
</div></div></div>
+<p></p><p>
+Type conversion should not be used as a substitute for i18n. It is not 
recommended to use this feature to print out
+properly formatted dates. Rather, you should use the i18n features of Struts 2 
(and consult the JavaDocs for JDK's
+MessageFormat object) to see how a properly formatted date should be displayed.
+</p></div></div>
 <p>The framework ships with a base helper class that simplifies converting to 
and from Strings, <code>org.apache.struts2.util.StrutsTypeConverter</code>. The 
helper class makes it easy to write type converters that handle converting 
objects to Strings as well as from Strings.</p>
 
 <p>From the JavaDocs:</p>
@@ -264,15 +318,43 @@ preferable a TypeConversionException.
 <h3 id="TypeConversion-NullPropertyHandling">Null Property Handling</h3>
 
 <p>Null property handling will automatically create objects where null 
references are found.</p>
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p></p><p>
+Provided that the key ReflectionContextState#CREATE_NULL_OBJECTS is in the 
action context with a value of true (this key is set
+only during the execution of the 
com.opensymphony.xwork2.interceptor.ParametersInterceptor), OGNL expressions
+that have caused a NullPointerException will be temporarily stopped for 
evaluation while the system automatically
+tries to solve the null references by automatically creating the object.
+</p>
+
+<p></p><p>The following rules are used when handling null references:</p>
+
+<p></p><ul><li>If the property is declared <i>exactly</i> as a Collection or 
List, then an ArrayList shall be
+returned and assigned to the null references.</li><li>If the property is 
declared as a Map, then a HashMap will be returned and assigned to the null
+references.</li><li>If the null property is a simple bean with a no-arg 
constructor, it will simply be created using the {@link
+ObjectFactory#buildBean(java.lang.Class, java.util.Map)} method.</li></ul>
+
+<p></p><p>
+For example, if a form element has a text field named <b>person.name</b> and 
the expression <i>person</i> evaluates
+to null, then this class will be invoked. Because the <i>person</i> expression 
evaluates to a <i>Person</i> class, a
+new Person is created and assigned to the null reference. Finally, the name is 
set on that object and the overall
+effect is that the system automatically created a Person object for you, set 
it by calling setUsers() and then
+finally called getUsers().setName() as you would typically expect.
+</p>
 
 <h3 id="TypeConversion-CollectionandMapSupport">Collection and Map Support</h3>
 
 <p>Collection and Map support provides intelligent null handling and type 
conversion for Java Collections.</p>
 
 <p>The framework supports ways to discover the object type for elements in a 
collection. The discover is made via an <em>ObjectTypeDeterminer</em>. A 
default implementation is provided with the framework. The Javadocs explain how 
Map and Collection support is discovered in the 
<code>DefaultObjectTypeDeterminer</code>.</p>
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+
+<p>This ObjectTypeDeterminer looks at the <b>Class-conversion.properties</b> 
for entries that indicated what
+objects are contained within Maps and Collections. For Collections, such as 
Lists, the element is specified using the
+pattern <b>Element_xxx</b>, where xxx is the field name of the collection 
property in your action or object. For
+Maps, both the key and the value may be specified by using the pattern 
<b>Key_xxx</b> and <b>Element_xxx</b>,
+respectively.</p>
+
+<p></p><p> From WebWork 2.1.x, the <b>Collection_xxx</b> format is still 
supported and honored, although it is deprecated
+and will be removed eventually.</p>
+
 <p>Additionally, you can create your own custom 
<code>ObjectTypeDeterminer</code> by implementing the 
<code>ObjectTypeDeterminer</code> interface. There is also an optional 
ObjectTypeDeterminer that utilizes Java 5 generics. See the <a shape="rect" 
href="annotations.html">Annotations</a> page for more information.</p>
 
 <h4 
id="TypeConversion-Indexingacollectionbyapropertyofthatcollection">Indexing a 
collection by a property of that collection</h4>
@@ -407,7 +489,26 @@ CreateIfNull_beanList=true
 <h2 id="TypeConversion-TypeConversionErrorHandling">Type Conversion Error 
Handling</h2>
 
 <p>Type conversion error handling provides a simple way to distinguish between 
an input <em>validation</em> problem and an input <em>type conversion</em> 
problem.</p>
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p></p><p>
+Any error that occurs during type conversion may or may not wish to be 
reported. For example, reporting that the
+input "abc" could not be converted to a number might be important. On the 
other hand, reporting that an empty string,
+"", cannot be converted to a number might not be important - especially in a 
web environment where it is hard to
+distinguish between a user not entering a value vs. entering a blank value.
+</p>
+<p> By default, all conversion errors are reported using the generic i18n key 
<b>xwork.default.invalid.fieldvalue</b>,
+which you can override (the default text is <i>Invalid field value for field 
"xxx"</i>, where xxx is the field name)
+in your global i18n resource bundle.
+</p>
+
+<p></p><p>However, sometimes you may wish to override this message on a 
per-field basis. You can do this by adding an i18n
+key associated with just your action (Action.properties) using the pattern 
<b>invalid.fieldvalue.xxx</b>, where xxx
+is the field name.
+</p>
+
+<p></p><p>It is important to know that none of these errors are actually 
reported directly. Rather, they are added to a map
+called <i>conversionErrors</i> in the ActionContext. There are several ways 
this map can then be accessed and the
+errors can be reported accordingly.
+</p>
 <p>There are two ways the error reporting can occur:</p>
 <ol><li>Globally, using the <a shape="rect" 
href="conversion-error-interceptor.html">Conversion Error 
Interceptor</a></li><li>On a per-field basis, using the <a shape="rect" 
href="conversion-validator.html">conversion validator</a></li></ol>
 

Modified: websites/production/struts/content/docs/typeconversion-annotation.html
==============================================================================
--- websites/production/struts/content/docs/typeconversion-annotation.html 
(original)
+++ websites/production/struts/content/docs/typeconversion-annotation.html Tue 
Aug 25 07:18:20 2015
@@ -138,19 +138,71 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><div class="error"><span 
class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+            <div id="ConfluenceContent"><p>This annotation is used for class 
and application wide conversion rules.</p>
+
+<p></p><p>
+Class wide conversion:<br clear="none">
+The conversion rules will be assembled in a file called 
<code>XXXAction-conversion.properties</code>
+within the same package as the related action class.
+Set type to: <code>type = ConversionType.CLASS</code>
+</p>
+
+<p></p><p>
+Application wide conversion:<br clear="none">
+The conversion rules will be assembled within the 
<code>xwork-conversion.properties</code> file within the classpath root.
+Set type to: <code>type = ConversionType.APPLICATION</code>
+</p>
 
 <h2 id="TypeConversionAnnotation-Usage">Usage</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p></p><p>The TypeConversion annotation can be applied at property and method 
level.</p>
 
 <h2 id="TypeConversionAnnotation-Parameters">Parameters</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p><table summary=""><thead><tr><th colspan="1" rowspan="1">Parameter</th><th 
colspan="1" rowspan="1">Required</th><th colspan="1" 
rowspan="1">Default</th><th colspan="1" 
rowspan="1">Description</th></tr></thead><tbody><tr><td colspan="1" 
rowspan="1">key</td><td colspan="1" rowspan="1">no</td><td colspan="1" 
rowspan="1">The annotated property/key name</td><td colspan="1" rowspan="1">The 
optional property name mostly used within TYPE level 
annotations.</td></tr><tr><td colspan="1" rowspan="1">type</td><td colspan="1" 
rowspan="1">no</td><td colspan="1" rowspan="1">ConversionType.CLASS</td><td 
colspan="1" rowspan="1">Enum value of ConversionType.  Determines whether the 
conversion should be applied at application or class level.</td></tr><tr><td 
colspan="1" rowspan="1">rule</td><td colspan="1" rowspan="1">no</td><td 
colspan="1" rowspan="1">ConversionRule.PROPERTY</td><td colspan="1" 
rowspan="1">Enum value of ConversionRule. The ConversionRule can be a property, 
a Collection or a Map.</
 td></tr><tr><td colspan="1" rowspan="1">converter</td><td colspan="1" 
rowspan="1">either this or value</td><td colspan="1" rowspan="1">&#160;</td><td 
colspan="1" rowspan="1">The class name of the TypeConverter to be used as 
converter.</td></tr><tr><td colspan="1" rowspan="1">value</td><td colspan="1" 
rowspan="1">either converter or this</td><td colspan="1" 
rowspan="1">&#160;</td><td colspan="1" rowspan="1">The value to set for 
ConversionRule.KEY_PROPERTY.</td></tr></tbody></table></p>
+
 
 <h2 id="TypeConversionAnnotation-Examples">Examples</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div></div>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+@Conversion()
+public class ConversionAction implements Action {
+
+  private String convertInt;
+
+  private String convertDouble;
+  private List users = null;
+
+  private HashMap keyValues = null;
+
+  @TypeConversion(type = ConversionType.APPLICATION, converter = 
&quot;com.opensymphony.xwork2.util.XWorkBasicConverter&quot;)
+  public void setConvertInt( String convertInt ) {
+      this.convertInt = convertInt;
+  }
+
+  @TypeConversion(converter = 
&quot;com.opensymphony.xwork2.util.XWorkBasicConverter&quot;)
+  public void setConvertDouble( String convertDouble ) {
+      this.convertDouble = convertDouble;
+  }
+
+  @TypeConversion(rule = ConversionRule.COLLECTION, converter = 
&quot;java.util.String&quot;)
+  public void setUsers( List users ) {
+      this.users = users;
+  }
+
+  @TypeConversion(rule = ConversionRule.MAP, converter = 
&quot;java.math.BigInteger&quot;)
+  public void setKeyValues( HashMap keyValues ) {
+      this.keyValues = keyValues;
+  }
+
+  @TypeConversion(type = ConversionType.APPLICATION, property = 
&quot;java.util.Date&quot;, converter = 
&quot;com.opensymphony.xwork2.util.XWorkBasicConverter&quot;)
+  public String execute() throws Exception {
+      return SUCCESS;
+  }
+}
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: 
websites/production/struts/content/docs/using-freemarker-templates.html
==============================================================================
--- websites/production/struts/content/docs/using-freemarker-templates.html 
(original)
+++ websites/production/struts/content/docs/using-freemarker-templates.html Tue 
Aug 25 07:18:20 2015
@@ -141,11 +141,11 @@ under the License.
             <div id="ConfluenceContent"><p><a shape="rect" 
class="external-link" href="http://freemarker.sourceforge.net/"; 
rel="nofollow">FreeMarker</a> is a Java-based template engine that is a great 
alternative to <a shape="rect" href="jsp.html">JSP</a>. FreeMarker is ideal for 
situations where your action results can possibly be loaded from outside a 
Servlet container. For example, if you wished to support plugins in your 
application, you might wish to use FreeMarker so that the plugins could provide 
the entire action class and view in a single jar that is loaded from the 
classloader.</p>
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1438274239530 {padding: 0px;}
-div.rbtoc1438274239530 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1438274239530 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1440486450795 {padding: 0px;}
+div.rbtoc1440486450795 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1440486450795 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1438274239530">
+/*]]>*/</style><div class="toc-macro rbtoc1440486450795">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#UsingFreemarkerTemplates-Configureyouractiontousethe&quot;freemarker&quot;resulttype">Configure
 your action to use the "freemarker" result type</a></li><li><a shape="rect" 
href="#UsingFreemarkerTemplates-Usingproperties">Using 
properties</a></li><li><a shape="rect" 
href="#UsingFreemarkerTemplates-Servlet/JSPScopedObjects">Servlet / JSP Scoped 
Objects</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#UsingFreemarkerTemplates-ApplicationScopeAttribute">Application Scope 
Attribute</a></li><li><a shape="rect" 
href="#UsingFreemarkerTemplates-SessionScopeAttribute">Session Scope 
Attribute</a></li><li><a shape="rect" 
href="#UsingFreemarkerTemplates-RequestScopeAttribute">Request Scope 
Attribute</a></li><li><a shape="rect" 
href="#UsingFreemarkerTemplates-RequestParameter">Request 
Parameter</a></li><li><a shape="rect" 
href="#UsingFreemarkerTemplates-Contextparameter">Context 
parameter</a></li></ul>
 </li><li><a shape="rect" 
href="#UsingFreemarkerTemplates-TemplateLoading">Template 
Loading</a></li><li><a shape="rect" 
href="#UsingFreemarkerTemplates-VariableResolution">Variable 
Resolution</a></li><li><a shape="rect" 
href="#UsingFreemarkerTemplates-FreeMarkerconfiguration">FreeMarker 
configuration</a></li><li><a shape="rect" 
href="#UsingFreemarkerTemplates-Tags">Tags</a>

Modified: websites/production/struts/content/docs/validation-annotation.html
==============================================================================
--- websites/production/struts/content/docs/validation-annotation.html 
(original)
+++ websites/production/struts/content/docs/validation-annotation.html Tue Aug 
25 07:18:20 2015
@@ -138,15 +138,16 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><div class="error"><span 
class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+            <div id="ConfluenceContent"><p>This annotation has been deprecated 
since 2.1 as its previous purpose, to define classes that support annotation 
validations,
+is no longer necessary.</p>
 
 <h2 id="ValidationAnnotation-Usage">Usage</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p></p><p>The Validation annotation must be applied at Type level.</p>
 
 <h2 id="ValidationAnnotation-Parameters">Parameters</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p><table class="confluenceTable" summary=""><tr><th colspan="1" rowspan="1" 
class="confluenceTh"> Parameter </th><th colspan="1" rowspan="1" 
class="confluenceTh"> Required </th><th colspan="1" rowspan="1" 
class="confluenceTh"> Default </th><th colspan="1" rowspan="1" 
class="confluenceTh"> Notes </th></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd">validations</td><td colspan="1" rowspan="1" 
class="confluenceTd">yes</td><td colspan="1" rowspan="1" 
class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" 
class="confluenceTd"></td></tr></table></p>
 
 <h2 id="ValidationAnnotation-Examples">Examples</h2>
 
@@ -154,9 +155,69 @@ under the License.
 <ul><li>Mark the interface with @Validation()</li><li>Apply standard or custom 
annoations at method level</li></ul>
 
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+@Validation()
+public interface AnnotationDataAware {
+
+    void setBarObj(Bar b);
+
+    Bar getBarObj();
+
+    @RequiredFieldValidator(message = &quot;You must enter a value for 
data.&quot;)
+    @RequiredStringValidator(message = &quot;You must enter a value for 
data.&quot;)
+    void setData(String data);
+
+    String getData();
+}
+]]></script>
+</div></div>
 <p><strong>An Annotated Class</strong></p>
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+@Validation()
+public class SimpleAnnotationAction extends ActionSupport {
+
+    @RequiredFieldValidator(type = ValidatorType.FIELD, message = &quot;You 
must enter a value for bar.&quot;)
+    @IntRangeFieldValidator(type = ValidatorType.FIELD, min = &quot;6&quot;, 
max = &quot;10&quot;, message = &quot;bar must be between ${min} and ${max}, 
current value is ${bar}.&quot;)
+    public void setBar(int bar) {
+        this.bar = bar;
+    }
+
+    public int getBar() {
+        return bar;
+    }
+
+    @Validations(
+            requiredFields =
+                    {@RequiredFieldValidator(type = ValidatorType.SIMPLE, 
fieldName = &quot;customfield&quot;, message = &quot;You must enter a value for 
field.&quot;)},
+            requiredStrings =
+                    {@RequiredStringValidator(type = ValidatorType.SIMPLE, 
fieldName = &quot;stringisrequired&quot;, message = &quot;You must enter a 
value for string.&quot;)},
+            emails =
+                    { @EmailValidator(type = ValidatorType.SIMPLE, fieldName = 
&quot;emailaddress&quot;, message = &quot;You must enter a value for 
email.&quot;)},
+            urls =
+                    { @UrlValidator(type = ValidatorType.SIMPLE, fieldName = 
&quot;hreflocation&quot;, message = &quot;You must enter a value for 
email.&quot;)},
+            stringLengthFields =
+                    {@StringLengthFieldValidator(type = ValidatorType.SIMPLE, 
trim = true, minLength=&quot;10&quot; , maxLength = &quot;12&quot;, fieldName = 
&quot;needstringlength&quot;, message = &quot;You must enter a 
stringlength.&quot;)},
+            intRangeFields =
+                    { @IntRangeFieldValidator(type = ValidatorType.SIMPLE, 
fieldName = &quot;intfield&quot;, min = &quot;6&quot;, max = &quot;10&quot;, 
message = &quot;bar must be between ${min} and ${max}, current value is 
${bar}.&quot;)},
+            dateRangeFields =
+                    {@DateRangeFieldValidator(type = ValidatorType.SIMPLE, 
fieldName = &quot;datefield&quot;, min = &quot;-1&quot;, max = &quot;99&quot;, 
message = &quot;bar must be between ${min} and ${max}, current value is 
${bar}.&quot;)},
+            expressions = {
+                @ExpressionValidator(expression = &quot;foo &gt; 1&quot;, 
message = &quot;Foo must be greater than Bar 1. Foo = ${foo}, Bar = 
${bar}.&quot;),
+                @ExpressionValidator(expression = &quot;foo &gt; 2&quot;, 
message = &quot;Foo must be greater than Bar 2. Foo = ${foo}, Bar = 
${bar}.&quot;),
+                @ExpressionValidator(expression = &quot;foo &gt; 3&quot;, 
message = &quot;Foo must be greater than Bar 3. Foo = ${foo}, Bar = 
${bar}.&quot;),
+                @ExpressionValidator(expression = &quot;foo &gt; 4&quot;, 
message = &quot;Foo must be greater than Bar 4. Foo = ${foo}, Bar = 
${bar}.&quot;),
+                @ExpressionValidator(expression = &quot;foo &gt; 5&quot;, 
message = &quot;Foo must be greater than Bar 5. Foo = ${foo}, Bar = 
${bar}.&quot;)
+    }
+    )
+    public String execute() throws Exception {
+        return SUCCESS;
+    }
+}
+
+]]></script>
+</div></div>
 
 <div class="confluence-information-macro 
confluence-information-macro-warning"><span class="aui-icon aui-icon-small 
aui-iconfont-error confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
 <p>When multiple methods are used to map different actions on the same class, 
and one of them is annotated with <em>@Validations</em>, those validators will 
be triggered for all the actions, unless they are annotated with 
@SkipValidation or <em>validateAnnotatedMethodOnly</em> is set to <em>true</em> 
in the "validation" interceptor, like:</p>

Modified: websites/production/struts/content/docs/validation-interceptor.html
==============================================================================
--- websites/production/struts/content/docs/validation-interceptor.html 
(original)
+++ websites/production/struts/content/docs/validation-interceptor.html Tue Aug 
25 07:18:20 2015
@@ -138,19 +138,86 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><div class="error"><span 
class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+            <div id="ConfluenceContent">
+<p></p><p>
+This interceptor runs the action through the standard validation framework, 
which in turn checks the action against
+any validation rules (found in files such as 
<i>ActionClass-validation.xml</i>) and adds field-level and action-level
+error messages (provided that the action implements ValidationAware). This 
interceptor
+is often one of the last (or second to last) interceptors applied in a stack, 
as it assumes that all values have
+already been set on the action.
+</p>
+
+<p></p><p>
+This interceptor does nothing if the name of the method being invoked is 
specified in the <b>excludeMethods</b>
+parameter. <b>excludeMethods</b> accepts a comma-delimited list of method 
names. For example, requests to
+<b>foo!input.action</b> and <b>foo!back.action</b> will be skipped by this 
interceptor if you set the
+<b>excludeMethods</b> parameter to "input, back".
+</p>
+
+<p></p><p>
+The workflow of the action request does not change due to this interceptor. 
Rather,
+this interceptor is often used in conjunction with the <b>workflow</b> 
interceptor.
+</p>
+
+<p></p><p>
+<b>NOTE:</b> As this method extends off MethodFilterInterceptor, it is capable 
of
+deciding if it is applicable only to selective methods in the action class. See
+<code>MethodFilterInterceptor</code> for more info.
+</p>
+
 
 <h2 id="ValidationInterceptor-Parameters">Parameters</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+
+<p></p><ul></ul><p></p><ul><li>alwaysInvokeValidate - Defaults to true. If 
true validate() method will always
+be invoked, otherwise it will not.</li></ul><p></p><ul><li>programmatic - 
Defaults to true. If true and the action is Validateable call validate(),
+and any method that starts with "validate".
+</li></ul><p></p><ul><li>declarative - Defaults to true. Perform validation 
based on xml or annotations.</li></ul><p></p>
+
 
 <h2 id="ValidationInterceptor-ExtendingtheInterceptor">Extending the 
Interceptor</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+
+<p>There are no known extension points for this interceptor.</p>
+
 
 <h2 id="ValidationInterceptor-Examples">Examples</h2>
 
-<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </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;action name=&quot;someAction&quot; 
class=&quot;com.examples.SomeAction&quot;&gt;
+    &lt;interceptor-ref name=&quot;params&quot;/&gt;
+    &lt;interceptor-ref name=&quot;validation&quot;/&gt;
+    &lt;interceptor-ref name=&quot;workflow&quot;/&gt;
+    &lt;result name=&quot;success&quot;&gt;good_result.ftl&lt;/result&gt;
+&lt;/action&gt;
+
+&lt;-- in the following case myMethod of the action class will not
+       get validated --&gt;
+&lt;action name=&quot;someAction&quot; 
class=&quot;com.examples.SomeAction&quot;&gt;
+    &lt;interceptor-ref name=&quot;params&quot;/&gt;
+    &lt;interceptor-ref name=&quot;validation&quot;&gt;
+        &lt;param name=&quot;excludeMethods&quot;&gt;myMethod&lt;/param&gt;
+    &lt;/interceptor-ref&gt;
+    &lt;interceptor-ref name=&quot;workflow&quot;/&gt;
+    &lt;result name=&quot;success&quot;&gt;good_result.ftl&lt;/result&gt;
+&lt;/action&gt;
+
+&lt;-- in the following case only annotated methods of the action class will
+       be validated --&gt;
+&lt;action name=&quot;someAction&quot; 
class=&quot;com.examples.SomeAction&quot;&gt;
+    &lt;interceptor-ref name=&quot;params&quot;/&gt;
+    &lt;interceptor-ref name=&quot;validation&quot;&gt;
+        &lt;param 
name=&quot;validateAnnotatedMethodOnly&quot;&gt;true&lt;/param&gt;
+    &lt;/interceptor-ref&gt;
+    &lt;interceptor-ref name=&quot;workflow&quot;/&gt;
+    &lt;result name=&quot;success&quot;&gt;good_result.ftl&lt;/result&gt;
+&lt;/action&gt;
+
+
+]]></script>
+</div></div></div>
         </div>
 
         


Reply via email to