You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2015/08/25 09:18:22 UTC

svn commit: r963014 [2/7] - /websites/production/struts/content/docs/

Modified: websites/production/struts/content/docs/customvalidator-annotation.html
==============================================================================
--- websites/production/struts/content/docs/customvalidator-annotation.html (original)
+++ websites/production/struts/content/docs/customvalidator-annotation.html Tue Aug 25 07:18:20 2015
@@ -138,19 +138,23 @@ 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 can be used for custom validators. Use the ValidationParameter annotation to supply additional params.</p>
 
 <h2 id="CustomValidatorAnnotation-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 or type level.</p>
 
 <h2 id="CustomValidatorAnnotation-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">name of validator</td><td colspan="1" rowspan="1" class="confluenceTd">Simple string which iden
 tifies that validator among other</td></tr></table></p>
 
 <h2 id="CustomValidatorAnnotation-Examples">Examples</h2>
 
-<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[
+@CustomValidator(type =&quot;customValidatorName&quot;, fieldName = &quot;myField&quot;)
+]]></script>
+</div></div>
 
 <h2 id="CustomValidatorAnnotation-AddingParameters">Adding Parameters</h2>
 

Modified: websites/production/struts/content/docs/date-validator.html
==============================================================================
--- websites/production/struts/content/docs/date-validator.html (original)
+++ websites/production/struts/content/docs/date-validator.html Tue Aug 25 07:18:20 2015
@@ -139,16 +139,57 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><h1 id="datevalidator-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 date supplied is within a specific range.</p>
+
+<p><b>NOTE:</b> If no date converter is specified, XWorkBasicConverter will kick
+in to do the date conversion, which by default using the <code>Date.SHORT</code> format using
+the a problematically specified locale else falling back to the system
+default locale.</p>
+
+
 
 <h1 id="datevalidator-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 min date range. If not specified will not be checked.</li><li>max - the max date range. If not specified 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="datevalidator-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;date&quot;&gt;
+        &lt;param name=&quot;fieldName&quot;&gt;birthday&lt;/param&gt;
+        &lt;param name=&quot;min&quot;&gt;01/01/1990&lt;/param&gt;
+        &lt;param name=&quot;max&quot;&gt;01/01/2000&lt;/param&gt;
+        &lt;message&gt;Birthday must be within ${min} and ${max}&lt;/message&gt;
+    &lt;/validator&gt;
+
+    &lt;!-- Field Validator Syntax --&gt;
+    &lt;field name=&quot;birthday&quot;&gt;
+        &lt;field-validator type=&quot;date&quot;&gt;
+     	   &lt;param name=&quot;min&quot;&gt;01/01/1990&lt;/param&gt;
+            &lt;param name=&quot;max&quot;&gt;01/01/2000&lt;/param&gt;
+            &lt;message&gt;Birthday must be within ${min} and ${max}&lt;/message&gt;
+    	   &lt;/field&gt;
+    &lt;/field&gt;
+
+    &lt;!-- Field Validator Syntax with expression --&gt;
+    &lt;field name=&quot;birthday&quot;&gt;
+        &lt;field-validator type=&quot;date&quot;&gt;
+            &lt;param name=&quot;minExpression&quot;&gt;${minValue}&lt;/param&gt; &lt;!-- will be evaluated as: Date getMinValue() --&gt;
+            &lt;param name=&quot;maxExpression&quot;&gt;${maxValue}&lt;/param&gt; &lt;!-- will be evaluated as: Date 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/daterangefieldvalidator-annotation.html
==============================================================================
--- websites/production/struts/content/docs/daterangefieldvalidator-annotation.html (original)
+++ websites/production/struts/content/docs/daterangefieldvalidator-annotation.html Tue Aug 25 07:18:20 2015
@@ -138,19 +138,25 @@ 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 date field has a value within a specified range.</p>
 
 <h2 id="DateRangeFieldValidatorAnnotation-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="DateRangeFieldValidatorAnnotation-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"> min </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"> Date property.  The minimum the date must be. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">minExpression</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 the date must be.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> max </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"> Date property.  The maximum date can be. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">maxExpress
 ion</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 date can be.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">maxExpression</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 date can be.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">dateFormat</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">Format used to parse min/max value.</td></tr></table></p>
+
+<p></p><p>If neither <em>min</em> nor <em>max</em> is set, nothing will be done.</p>
 
 <h2 id="DateRangeFieldValidatorAnnotation-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[
+@DateRangeFieldValidator(message = &quot;Default message&quot;, key = &quot;i18n.key&quot;, shortCircuit = true, min = &quot;2005/01/01&quot;, max = &quot;2005/12/31&quot;)
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/default-workflow-interceptor.html
==============================================================================
--- websites/production/struts/content/docs/default-workflow-interceptor.html (original)
+++ websites/production/struts/content/docs/default-workflow-interceptor.html Tue Aug 25 07:18:20 2015
@@ -138,20 +138,94 @@ 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 class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+            <div id="ConfluenceContent"><p>
+An interceptor that makes sure there are not validation errors before allowing the interceptor chain to continue.
+<b>This interceptor does not perform any validation</b>.
+</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>
+<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. This is done by adding param tags
+for the interceptor element, naming either a list of excluded method names and/or a list of included method
+names, whereby includeMethods overrides excludedMethods. A single * sign is interpreted as wildcard matching
+all methods for both parameters.
+See MethodFilterInterceptor for more info.
+</p>
+
+<p></p><p>
+This interceptor also supports the following interfaces which can implemented by actions:
+</p>
+
+<p></p><ul><li>ValidationAware - implemented by ActionSupport class</li><li>ValidationWorkflowAware - allows changing result name programmatically</li><li>ValidationErrorAware - notifies action about errors and also allow change result name</li></ul>
+
+<p></p><p>
+You can also use InputConfig annotation to change result name returned when validation errors occurred.
+</p>
+
+
+<p><b>In DefaultWorkflowInterceptor</b>
+</p><p>applies only when action implements com.opensymphony.xwork2.Validateable</p>
+<ol><li>if the action class have validate{MethodName}(), it will be invoked</li><li>else if the action class have validateDo{MethodName}(), it will be invoked</li><li>no matter if 1] or 2] is performed, if alwaysInvokeValidate property of the interceptor is "true" (which is by default "true"), validate() will be invoked.</li></ol>
+
 
 <h2 id="DefaultWorkflowInterceptor-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><li>inputResultName - Default to "input". Determine the result name to be returned when
+an action / field error is found.</li></ul>
 
 <h2 id="DefaultWorkflowInterceptor-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 known extension points for this interceptor.</p>
+
 
 <h2 id="DefaultWorkflowInterceptor-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 this case myMethod as well as mySecondMethod of the action class
+       will not pass through the workflow process --&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;interceptor-ref name=&quot;workflow&quot;&gt;
+        &lt;param name=&quot;excludeMethods&quot;&gt;myMethod,mySecondMethod&lt;/param&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 this case, the result named &quot;error&quot; will be used when
+       an action / field error is found --&gt;
+&lt;-- The Interceptor will only be applied for myWorkflowMethod method of action
+       classes, since this is the only included method while any others are excluded --&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;interceptor-ref name=&quot;workflow&quot;&gt;
+       &lt;param name=&quot;inputResultName&quot;&gt;error&lt;/param&gt;
+        &lt;param name=&quot;excludeMethods&quot;&gt;*&lt;/param&gt;
+        &lt;param name=&quot;includeMethods&quot;&gt;myWorkflowMethod&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/devmode.html
==============================================================================
--- websites/production/struts/content/docs/devmode.html (original)
+++ websites/production/struts/content/docs/devmode.html Tue Aug 25 07:18:20 2015
@@ -138,53 +138,15 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><h2 id="devMode-DevelopmentMode(aka&quot;devMode&quot;)">Development Mode (aka "devMode")</h2>
-
-<p>Struts 2 has a setting (which can be set to <code>true</code> or <code>false</code> in <a shape="rect" href="strutsproperties.html">struts.properties</a>) called devMode (= development mode). When this setting is enabled, Struts 2 will provide additional logging and debug information, which can significantly speed up development.</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>You can also set this constant in your struts.xml file: <code>&lt;constant name="struts.devMode" value="true" /&gt;</code>. </p>
-
-<p>This is the preferred method. See <a shape="rect" href="constant-configuration.html">Constant Configuration</a> for more information.</p></div></div>
-
-<h2 id="devMode-Whatdoesitdo?">What does it do?</h2>
-
-<ul class="alternate"><li>When enabled, Struts 2 will reload your <strong>resource bundles on every request</strong> (meaning you can change your .properties files, save them, and see the changes reflected on the next request).<br clear="none">
-Note: this option can also be set standalone via <code>struts.i18n.reload = true</code></li></ul>
-
-
-<ul class="alternate"><li>It will also <strong>reload your xml configuration files</strong> (<a shape="rect" href="strutsxml.html">struts.xml</a>), your <strong>validation files</strong>, and so on, on every request. This is useful for testing or fine-tuning your configuration without having to redeploy your application every time.<br clear="none">
-Note: this option can also be set standalone via <code>struts.configuration.xml.reload = true</code></li></ul>
-
-
-<ul class="alternate"><li>And thirdly, perhaps the setting which is less widely known, and therefore a source of much confusion: it will <strong>raise the level of debug or normally ignorable problems to errors</strong>. For example: when you <strong>submit a field which cannot be set on an action</strong> 'someUnknownField', it will normally be ignored. However, when you're in development mode, <strong>an exception will be thrown</strong>, telling you an invalid field was submitted. This is very useful for debugging or testing large forms, but can also be confusing if you're relying on parameters in your request that are not set on the action, but which you are using directly in your view layer (<strong>warning</strong>: bad practice, you should always validate input from the web).</li></ul>
-
-
-<h2 id="devMode-Don'tforget...">Don't forget...</h2>
-
-<p>By default, the development mode is disabled, because it has a significant impact on <a shape="rect" href="performance-tuning.html">performance</a>, since the entire configuration will be reloaded on every request.</p>
-
-<h2 id="devMode-Pagerenderingisslow">Page rendering is slow</h2>
-
-<p>If you experience slow page rendering when <code>devMode</code> is on it's mostly because Freemarker cache is disabled during <code>devMode</code>. You can explicit enable cache and any other options disabled by <code>devMode</code>, see example below:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">
-&lt;constant name="struts.devMode" value="true" /&gt;
+            <div id="ConfluenceContent"><h2 id="devMode-DevelopmentMode(aka&quot;devMode&quot;)">Development Mode (aka "devMode")</h2><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>Please turn this option off before deploying application to a production environment - it can expose sensitive data of your application!</p></div></div><p>Struts 2 has a setting (which can be set to <code style="line-height: 1.4285715;">true</code> or <code style="line-height: 1.4285715;">false</code> in <a shape="rect" href="strutsproperties.html">struts.properties</a>) called devMode (= development mode). When this setting is enabled, Struts 2 will provide additional logging and debug information, which can significantly speed up development.</p><div class="confluence-information-macro confluence-information-macro-tip"><span c
 lass="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>You can also set this constant in your struts.xml file: <code>&lt;constant name="struts.devMode" value="true" /&gt;</code>.</p><p>This is the preferred method. See <a shape="rect" href="constant-configuration.html">Constant Configuration</a> for more information.</p></div></div><h2 id="devMode-Whatdoesitdo?">What does it do?</h2><ul class="alternate"><li>When enabled, Struts 2 will reload your <strong>resource bundles on every request</strong> (meaning you can change your .properties files, save them, and see the changes reflected on the next request).<br clear="none"> Note: this option can also be set standalone via <code>struts.i18n.reload = true</code></li></ul><ul class="alternate"><li>It will also <strong>reload your xml configuration files</strong> (<a shape="rect" href="strutsxml.html">struts.xml</a>), your <strong>validation files</st
 rong>, and so on, on every request. This is useful for testing or fine-tuning your configuration without having to redeploy your application every time.<br clear="none"> Note: this option can also be set standalone via <code>struts.configuration.xml.reload = true</code></li></ul><ul class="alternate"><li>And thirdly, perhaps the setting which is less widely known, and therefore a source of much confusion: it will <strong>raise the level of debug or normally ignorable problems to errors</strong>. For example: when you <strong>submit a field which cannot be set on an action</strong> 'someUnknownField', it will normally be ignored. However, when you're in development mode, <strong>an exception will be thrown</strong>, telling you an invalid field was submitted. This is very useful for debugging or testing large forms, but can also be confusing if you're relying on parameters in your request that are not set on the action, but which you are using directly in your view layer (<strong>war
 ning</strong>: bad practice, you should always validate input from the web).</li></ul><h2 id="devMode-Don'tforget...">Don't forget...</h2><p>By default, the development mode is disabled, because it has a significant impact on <a shape="rect" href="performance-tuning.html">performance</a>, since the entire configuration will be reloaded on every request.</p><h2 id="devMode-Pagerenderingisslow">Page rendering is slow</h2><p>If you experience slow page rendering when <code>devMode</code> is on it's mostly because Freemarker cache is disabled during <code>devMode</code>. You can explicit enable cache and any other options disabled by <code>devMode</code>, see example below:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">&lt;constant name="struts.devMode" value="true" /&gt;
 &lt;constant name="struts.i18n.reload" value="false"/&gt;
 &lt;constant name="struts.configuration.xml.reload" value="false"/&gt;
 &lt;constant name="struts.freemarker.templatesCache" value="true"/&gt;
 &lt;constant name="struts.freemarker.templatesCache.updateDelay" value="120"/&gt;
 &lt;constant name="struts.freemarker.mru.max.strong.size" value="120"/&gt;
 </pre>
-</div></div>
-
-<p>As you can see, you can switch <code>devMode</code> on and still have production options on as well.</p>
-
-<div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body">
-<p>Please remember to use production optimized options which can be different than these used during development (especially cache related)!</p></div></div>
-
-<h2 id="devMode-Next:">Next: <a shape="rect" href="zero-configuration.html">Zero Configuration</a></h2></div>
+</div></div><p>As you can see, you can switch <code>devMode</code> on and still have production options on as well.</p><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Please remember to use production optimized options which can be different than these used during development (especially cache related)!</p></div></div><h2 id="devMode-Next:">Next: <a shape="rect" href="zero-configuration.html">Zero Configuration</a></h2></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/double-validator.html
==============================================================================
--- websites/production/struts/content/docs/double-validator.html (original)
+++ websites/production/struts/content/docs/double-validator.html Tue Aug 25 07:18:20 2015
@@ -139,16 +139,51 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><h1 id="doublevalidator-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 double specified is within a certain range.</p>
 
 <h1 id="doublevalidator-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>minInclusive - the minimum inclusive value in FloatValue format specified by Java language (if none is specified, it will not be checked) </li><li>maxInclusive - the maximum inclusive value in FloatValue format specified by Java language (if none is specified, it will not be checked) </li><li>minExclusive - the minimum exclusive value in FloatValue format specified by Java language (if none is specified, it will not be checked) </li><li>maxExclusive - the maximum exclusive value in FloatValue format specified by Java language (if none is specified, it will not be checked) </li><li>minInclusiveExpression - the minimum inclusive value specified as a OGNL expression (if none is specified, it will not be checked) </li><li>maxInclusiveExpression - the maximum inclusive value specified as a OGNL expression (if none is specified, it will not be che
 cked) </li><li>minExclusiveExpression - the minimum exclusive value specified as a OGNL expression (if none is specified, it will not be checked) </li><li>maxExclusiveExpression - the maximum exclusive value specified as a OGNL expression (if none is specified, it will not be checked) </li></ul>
+
+<p>You can specify either minInclusive, maxInclusive, minExclusive and maxExclusive or minInclusiveExpression, maxInclusiveExpression,
+minExclusiveExpression and maxExclusiveExpression as a OGNL expression, see example below. You can always try to mix params
+but be aware that such behaviour was not tested.</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 ${minInclusiveExpression}, ${maxInclusiveExpression}, ${minExclusiveExpressionExpression} and ${maxExclusive}
+as an expression as this will turn into infinitive loop!</p></div></div>
 
 <h1 id="doublevalidator-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;double&quot;&gt;
+        &lt;param name=&quot;fieldName&quot;&gt;percentage&lt;/param&gt;
+        &lt;param name=&quot;minInclusive&quot;&gt;20.1&lt;/param&gt;
+        &lt;param name=&quot;maxInclusive&quot;&gt;50.1&lt;/param&gt;
+        &lt;message&gt;Age needs to be between ${minInclusive} and ${maxInclusive} (inclusive)&lt;/message&gt;
+    &lt;/validator&gt;
+
+    &lt;!-- Field Validator Syntax --&gt;
+    &lt;field name=&quot;percentage&quot;&gt;
+        &lt;field-validator type=&quot;double&quot;&gt;
+            &lt;param name=&quot;minExclusive&quot;&gt;0.123&lt;/param&gt;
+            &lt;param name=&quot;maxExclusive&quot;&gt;99.98&lt;/param&gt;
+            &lt;message&gt;Percentage needs to be between ${minExclusive} and ${maxExclusive} (exclusive)&lt;/message&gt;
+        &lt;/field-validator&gt;
+    &lt;/field&gt;
+
+    &lt;!-- Field Validator Syntax with expression --&gt;
+    &lt;field name=&quot;percentage&quot;&gt;
+        &lt;field-validator type=&quot;double&quot;&gt;
+            &lt;param name=&quot;minExclusiveExpression&quot;&gt;${minExclusiveValue}&lt;/param&gt; &lt;!-- will be evaluated as: Double getMinExclusiveValue() --&gt;
+            &lt;param name=&quot;maxExclusiveExpression&quot;&gt;${maxExclusiveValue}&lt;/param&gt; &lt;!-- will be evaluated as: Double getMaxExclusiveValue() --&gt;
+            &lt;message&gt;Percentage needs to be between ${minExclusive} and ${maxExclusive} (exclusive)&lt;/message&gt;
+        &lt;/field-validator&gt;
+    &lt;/field&gt;
+&lt;/validators&gt;
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/doublerangefieldvalidator-annotation.html
==============================================================================
--- websites/production/struts/content/docs/doublerangefieldvalidator-annotation.html (original)
+++ websites/production/struts/content/docs/doublerangefieldvalidator-annotation.html Tue Aug 25 07:18:20 2015
@@ -138,19 +138,28 @@ 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 double field has a value within a specified range.
+If neither min nor max is set, nothing will be done.</p>
 
 <h2 id="DoubleRangeFieldValidatorAnnotation-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="DoubleRangeFieldValidatorAnnotation-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"> minInclusive </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"> Double property.  The inclusive minimum the number must be. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">minInclusiveExpression</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 inclusive minimum the number must be. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> maxInclusive </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"> Double property.  The inclusive maximum number can be. </td>
 </tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> maxInclusiveExpression </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 inclusive maximum number can be. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> minExclusive </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"> Double property.  The exclusive minimum the number must be. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> minExclusiveExpression </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 exclusive minimum the number must be. </td></tr><tr><td colspan="1" row
 span="1" class="confluenceTd"> maxExclusive </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"> Double property.  The exclusive maximum number can be. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> maxExclusiveExpression </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 exclusive maximum number can be. </td></tr></table></p>
+
+<p></p><p>If neither <em>min</em> nor <em>max</em> is set, nothing will be done.</p>
+
+<p></p><p>The values for min and max must be inserted as String values so that "0" can be handled as a possible value.</p>
 
 <h2 id="DoubleRangeFieldValidatorAnnotation-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[
+@DoubleRangeFieldValidator(message = &quot;Default message&quot;, key = &quot;i18n.key&quot;, shortCircuit = true, minInclusive = &quot;0.123&quot;, maxInclusive = &quot;99.987&quot;)
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/editing-the-documentation.html
==============================================================================
--- websites/production/struts/content/docs/editing-the-documentation.html (original)
+++ websites/production/struts/content/docs/editing-the-documentation.html Tue Aug 25 07:18:20 2015
@@ -137,7 +137,7 @@ under the License.
 
 <h2 id="EditingtheDocumentation-DocumentationWorkflow">Documentation Workflow</h2>
 
-<p>Since projects like Struts wear our code "on our sleeve", there's always a discussion over whether the website should represent the latest documentation or the documentation for the "best available" release. Over the years, we've done it one way and the another, and now we do it both ways <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"> </p>
+<p>Since projects like Struts wear our code "on our sleeve", there's always a discussion over whether the website should represent the latest documentation or the documentation for the "best available" release. Over the years, we've done it one way and the another, and now we do it both ways <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"> </p>
 
 <p>The latest documentation for Struts 2.0.x is at </p>
 

Modified: websites/production/struts/content/docs/element-annotation.html
==============================================================================
--- websites/production/struts/content/docs/element-annotation.html (original)
+++ websites/production/struts/content/docs/element-annotation.html Tue Aug 25 07:18:20 2015
@@ -138,15 +138,15 @@ 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>Sets the Element for type conversion.</p>
 
 <h2 id="ElementAnnotation-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 Element annotation must be applied at field or method level.</p>
 
 <h2 id="ElementAnnotation-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">value</td><td colspan="1" rowspan="1">no</td><td colspan="1" rowspan="1">java.lang.Object.class</td><td colspan="1" rowspan="1">The element property value.</td></tr></tbody></table></p>
 
 <h2 id="ElementAnnotation-Examples">Examples</h2>
 

Modified: websites/production/struts/content/docs/email-validator.html
==============================================================================
--- websites/production/struts/content/docs/email-validator.html (original)
+++ websites/production/struts/content/docs/email-validator.html Tue Aug 25 07:18:20 2015
@@ -139,16 +139,54 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><h1 id="emailvalidator-Description">Description</h1>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p>EmailValidator checks that a given String field, if not empty, is a valid email address.</p>
+
+<p>The regular expression used to validate that the string is an email address is:</p>
+
+<p></p><pre>
+\\b^['_a-z0-9-\\+]<span style="text-decoration: underline; ">(\\.['_a-z0-9-\\+]</span>)<strong>@[a-z0-9-]<span style="text-decoration: underline; ">(\\.[a-z0-9-]</span>)</strong>\\.([a-z]{2}|aero|arpa|asia|biz|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|nato|net|org|pro|tel|travel|xxx)$\\b
+</pre>
+
+<p>You can also specify expression, caseSensitive and trim params as a OGNL expression, see the example below.</p>
 
 <h1 id="emailvalidator-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></ul>
+Check also documentation of the RegexpValidator for more details - the EmailValidator bases on it.
 
 <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 ${regexExpression}, ${caseSensitiveExpression} and ${trimExpression} as an expression as this will turn into infinitive loop!</p></div></div>
 
 <h1 id="emailvalidator-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;!-- Plain Validator Syntax --&gt;
+    &lt;validators&gt;
+        &lt;validator type=&quot;email&quot;&gt;
+            &lt;param name=&quot;fieldName&quot;&gt;myEmail&lt;/param&gt;
+            &lt;message&gt;Must provide a valid email&lt;/message&gt;
+        &lt;/validator&gt;
+    &lt;/validators&gt;
+    
+    &lt;!-- Field Validator Syntax --&gt;
+    &lt;field name=&quot;myEmail&quot;&gt;
+       &lt;field-validator type=&quot;email&quot;&gt;
+          &lt;message&gt;Must provide a valid email&lt;/message&gt;
+       &lt;/field-validator&gt;
+    &lt;/field&gt;
+
+    &lt;!-- Field Validator Syntax with expressions --&gt;
+    &lt;!-- Only available when used with xml based configuration, if you want to have the same
+            flexibility with annotations use @RegexFieldValidator instead --&gt;
+    &lt;field name=&quot;myEmail&quot;&gt;
+       &lt;field-validator type=&quot;email&quot;&gt;
+          &lt;param name=&quot;regexExpression&quot;&gt;${emailPattern}&lt;/param&gt; &lt;!-- will be evaluated as: String getEmailPattern() --&gt;
+          &lt;param name=&quot;caseSensitiveExpression&quot;&gt;${emailCaseSensitive}&lt;/param&gt; &lt;!-- will be evaluated as: boolean getEmailCaseSensitive() --&gt;
+          &lt;param name=&quot;trimExpression&quot;&gt;${trimEmail}&lt;/param&gt; &lt;!-- will be evaluated as: boolean getTrimEmail() --&gt;
+          &lt;message&gt;Must provide a valid email&lt;/message&gt;
+       &lt;/field-validator&gt;
+    &lt;/field&gt;
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/emailvalidator-annotation.html
==============================================================================
--- websites/production/struts/content/docs/emailvalidator-annotation.html (original)
+++ websites/production/struts/content/docs/emailvalidator-annotation.html Tue Aug 25 07:18:20 2015
@@ -138,19 +138,23 @@ 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 field is a valid e-mail address if it contains a non-empty String.</p>
 
 <h2 id="EmailValidatorAnnotation-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="EmailValidatorAnnotation-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></table></p>
 
 <h2 id="EmailValidatorAnnotation-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[
+@EmailValidator(message = &quot;Default message&quot;, key = &quot;i18n.key&quot;, shortCircuit = true)
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/exception-interceptor.html
==============================================================================
--- websites/production/struts/content/docs/exception-interceptor.html (original)
+++ websites/production/struts/content/docs/exception-interceptor.html Tue Aug 25 07:18:20 2015
@@ -138,19 +138,66 @@ 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 forms the core functionality of the exception handling feature. Exception handling allows you to map
+an exception to a result code, just as if the action returned a result code instead of throwing an unexpected
+exception. When an exception is encountered, it is wrapped with an ExceptionHolder and pushed on the stack,
+providing easy access to the exception from within your result.
+</p>
+
+<p></p><p>
+<b>Note:</b> While you can configure exception mapping in your configuration file at any point, the configuration
+will not have any effect if this interceptor is not in the interceptor stack for your actions. It is recommended that
+you make this interceptor the first interceptor on the stack, ensuring that it has full access to catch any
+exception, even those caused by other interceptors.
+</p>
+
 
 <h2 id="ExceptionInterceptor-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>logEnabled (optional) - Should exceptions also be logged? (boolean true|false)</li></ul><p></p><ul><li>logLevel (optional) - what log level should we use (<code>trace, debug, info, warn, error, fatal</code>)? - defaut is <code>debug</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.ExceptionMappingInterceptor</code>.</li></ul><p></p>
+
+<p></p><p>
+The parameters above enables us to log all thrown exceptions with stacktace in our own logfile,
+and present a friendly webpage (with no stacktrace) to the end user.
+</p>
+
 
 <h2 id="ExceptionInterceptor-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>
+If you want to add custom handling for publishing the Exception, you may override
+{@link #publishException(com.opensymphony.xwork2.ActionInvocation, ExceptionHolder)}. The default implementation
+pushes the given ExceptionHolder on value stack. A custom implementation could add additional logging etc.
+</p>
 
 <h2 id="ExceptionInterceptor-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;xwork&gt;
+    &lt;package name=&quot;default&quot; extends=&quot;xwork-default&quot;&gt;
+        &lt;global-results&gt;
+            &lt;result name=&quot;error&quot; type=&quot;freemarker&quot;&gt;error.ftl&lt;/result&gt;
+        &lt;/global-results&gt;
+
+        &lt;global-exception-mappings&gt;
+            &lt;exception-mapping exception=&quot;java.lang.Exception&quot; result=&quot;error&quot;/&gt;
+        &lt;/global-exception-mappings&gt;
+
+        &lt;action name=&quot;test&quot;&gt;
+            &lt;interceptor-ref name=&quot;exception&quot;/&gt;
+            &lt;interceptor-ref name=&quot;basicStack&quot;/&gt;
+            &lt;exception-mapping exception=&quot;com.acme.CustomException&quot; result=&quot;custom_error&quot;/&gt;
+            &lt;result name=&quot;custom_error&quot;&gt;custom_error.ftl&lt;/result&gt;
+            &lt;result name=&quot;success&quot; type=&quot;freemarker&quot;&gt;test.ftl&lt;/result&gt;
+        &lt;/action&gt;
+    &lt;/package&gt;
+&lt;/xwork&gt;
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/execute-action.html
==============================================================================
--- websites/production/struts/content/docs/execute-action.html (original)
+++ websites/production/struts/content/docs/execute-action.html Tue Aug 25 07:18:20 2015
@@ -142,7 +142,7 @@ under the License.
 
 <h2 id="ExecuteAction-Extensions">Extensions</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> Branching Action </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 1a    </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>&#160;</p></th></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> .1     </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 2a    </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>&#160;</p></th></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> .1  
    </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <img class="emoticon emoticon-information" src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/information.png" data-emoticon-name="information" alt="(info)"> </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> Branching Action </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 1a    </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>&#160;</p></th></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> .1     </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 2a    </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>&#160;</p></th></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> .1  
    </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><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)"> </p></td></tr></tbody></table></div>
 
 
 <hr>

Modified: websites/production/struts/content/docs/expression-validator.html
==============================================================================
--- websites/production/struts/content/docs/expression-validator.html (original)
+++ websites/production/struts/content/docs/expression-validator.html Tue Aug 25 07:18:20 2015
@@ -140,15 +140,24 @@ under the License.
         <div class="wiki-content">
             <div id="ConfluenceContent">
 <h1 id="expressionvalidator-Description">Description</h1>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p>A Non-Field Level validator that validates based on regular expression supplied.</p>
 
 
 <h1 id="expressionvalidator-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>expression - the Ognl expression to be evaluated against the stack (Must evaluate to a Boolean)</li></ul>
 
 
 <h1 id="expressionvalidator-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;validator type=&quot;expression&quot;&gt;
+         &lt;param name=&quot;expression&quot;&gt; .... &lt;/param&gt;
+         &lt;message&gt;Failed to meet Ognl Expression  .... &lt;/message&gt;
+      &lt;/validator&gt;
+&lt;/validators&gt;
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/expressionvalidator-annotation.html
==============================================================================
--- websites/production/struts/content/docs/expressionvalidator-annotation.html (original)
+++ websites/production/struts/content/docs/expressionvalidator-annotation.html Tue Aug 25 07:18:20 2015
@@ -141,19 +141,23 @@ under the License.
             <div id="ConfluenceContent">
 <h1 id="ExpressionValidatorAnnotation-ExpressionValidatorAnnotation">ExpressionValidator Annotation</h1>
 
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p>This non-field level validator validates a supplied regular expression.</p>
 
 <h2 id="ExpressionValidatorAnnotation-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="ExpressionValidatorAnnotation-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">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"> expression </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"> An OGNL expression that returns a boolean value.  </td></tr></table></p>
 
 <h2 id="ExpressionValidatorAnnotation-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[
+@ExpressionValidator(message = &quot;Default message&quot;, key = &quot;i18n.key&quot;, shortCircuit = true, expression = &quot;an OGNL expression&quot; )
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/fieldexpression-validator.html
==============================================================================
--- websites/production/struts/content/docs/fieldexpression-validator.html (original)
+++ websites/production/struts/content/docs/fieldexpression-validator.html Tue Aug 25 07:18:20 2015
@@ -140,14 +140,35 @@ under the License.
         <div class="wiki-content">
             <div id="ConfluenceContent">
 <h1 id="fieldexpressionvalidator-Description">Description</h1>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<p>Validates a field using an OGNL expression.</p>
 
 <h1 id="fieldexpressionvalidator-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>expression - The Ognl expression (must evaluate to a boolean) which is to be evalidated the stack</li></ul>
 
 
 <h1 id="fieldexpressionvalidator-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;!-- Plain Validator Syntax --&gt;
+&lt;validators&gt;
+    &lt;!-- Plain Validator Syntax --&gt;
+    &lt;validator type=&quot;fieldexpression&quot;&gt;
+       &lt;param name=&quot;fieldName&quot;&gt;myField&lt;/param&gt;
+       &lt;param name=&quot;expression&quot;&gt;&lt;![CDATA[#myCreditLimit &gt; #myGirfriendCreditLimit]]&gt;&lt;/param&gt;
+       &lt;message&gt;My credit limit should be MORE than my girlfriend&lt;/message&gt;
+    &lt;validator&gt;
+    
+    &lt;!-- Field Validator Syntax --&gt;
+    &lt;field name=&quot;myField&quot;&gt;
+        &lt;field-validator type=&quot;fieldexpression&quot;&gt;
+            &lt;param name=&quot;expression&quot;&gt;&lt;![CDATA[#myCreditLimit &gt; #myGirfriendCreditLimit]]&gt;&lt;/param&gt;
+            &lt;message&gt;My credit limit should be MORE than my girlfriend&lt;/message&gt;
+        &lt;/field-validator&gt;
+    &lt;/field&gt;
+    
+&lt;/vaidators&gt;
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/fieldexpressionvalidator-annotation.html
==============================================================================
--- websites/production/struts/content/docs/fieldexpressionvalidator-annotation.html (original)
+++ websites/production/struts/content/docs/fieldexpressionvalidator-annotation.html Tue Aug 25 07:18:20 2015
@@ -139,19 +139,25 @@ 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>
+<p>This validator uses an OGNL expression to perform its validator.
+The error message will be added to the field if the expression returns
+false when it is evaluated against the value stack.</p>
 
 <h2 id="FieldExpressionValidatorAnnotation-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="FieldExpressionValidatorAnnotation-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"> expression </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"> An OGNL expression that 
 returns a boolean value.  </td></tr></table></p>
 
 <h2 id="FieldExpressionValidatorAnnotation-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[
+@FieldExpressionValidator(message = &quot;Default message&quot;, key = &quot;i18n.key&quot;, shortCircuit = true, expression = &quot;an OGNL expression&quot;)
+]]></script>
+</div></div></div>
         </div>
 
         

Modified: websites/production/struts/content/docs/file-upload.html
==============================================================================
--- websites/production/struts/content/docs/file-upload.html (original)
+++ websites/production/struts/content/docs/file-upload.html Tue Aug 25 07:18:20 2015
@@ -139,11 +139,11 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><p>The Struts 2 framework provides built-in support for processing file uploads that conform to <a shape="rect" class="external-link" href="http://www.ietf.org/rfc/rfc1867.txt" rel="nofollow">RFC 1867</a>, "Form-based File Upload in HTML". When correctly configured the framework will pass uploaded file(s) into your Action class. Support for individual and multiple file uploads are provided. When a file is uploaded it will typically be stored in a temporary directory. Uploaded files should be processed or moved by your Action class to ensure the data is not lost. Be aware that servers may have a security policy in place that prohibits you from writing to directories other than the temporary directory and the directories that belong to your web application.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1438274312148 {padding: 0px;}
-div.rbtoc1438274312148 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1438274312148 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1440486534735 {padding: 0px;}
+div.rbtoc1440486534735 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1440486534735 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1438274312148">
+/*]]>*/</style></p><div class="toc-macro rbtoc1440486534735">
 <ul class="toc-indentation"><li><a shape="rect" href="#FileUpload-Dependencies">Dependencies</a></li><li><a shape="rect" href="#FileUpload-BasicUsage">Basic Usage</a></li><li><a shape="rect" href="#FileUpload-UploadingMultipleFiles">Uploading Multiple Files</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#FileUpload-UploadingMultipleFilesusingArrays">Uploading Multiple Files using Arrays</a></li><li><a shape="rect" href="#FileUpload-UploadingMultipleFilesusingLists">Uploading Multiple Files using Lists</a></li></ul>
 </li><li><a shape="rect" href="#FileUpload-AdvancedConfiguration">Advanced Configuration</a>

Modified: websites/production/struts/content/docs/freemarker.html
==============================================================================
--- websites/production/struts/content/docs/freemarker.html (original)
+++ websites/production/struts/content/docs/freemarker.html Tue Aug 25 07:18:20 2015
@@ -139,11 +139,11 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1438273919460 {padding: 0px;}
-div.rbtoc1438273919460 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1438273919460 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1440486090739 {padding: 0px;}
+div.rbtoc1440486090739 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1440486090739 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1438273919460">
+/*]]>*/</style></p><div class="toc-macro rbtoc1440486090739">
 <ul class="toc-indentation"><li><a shape="rect" href="#FreeMarker-GettingStarted">Getting Started</a></li><li><a shape="rect" href="#FreeMarker-Servlet/JSPScopedObjects">Servlet / JSP Scoped Objects</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#FreeMarker-ApplicationScopeAttribute">Application Scope Attribute</a></li><li><a shape="rect" href="#FreeMarker-SessionScopeAttribute">Session Scope Attribute</a></li><li><a shape="rect" href="#FreeMarker-RequestScopeAttribute">Request Scope Attribute</a></li><li><a shape="rect" href="#FreeMarker-RequestParameter">Request Parameter</a></li><li><a shape="rect" href="#FreeMarker-Contextparameter">Context parameter</a></li></ul>
 </li><li><a shape="rect" href="#FreeMarker-TemplateLoading">Template Loading</a></li><li><a shape="rect" href="#FreeMarker-VariableResolution">Variable Resolution</a></li><li><a shape="rect" href="#FreeMarker-TagSupport">Tag Support</a></li><li><a shape="rect" href="#FreeMarker-TipsandTricks">Tips and Tricks</a>

Modified: websites/production/struts/content/docs/home.html
==============================================================================
--- websites/production/struts/content/docs/home.html (original)
+++ websites/production/struts/content/docs/home.html Tue Aug 25 07:18:20 2015
@@ -125,7 +125,7 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><p>Apache Struts 2 is an elegant, extensible framework for building enterprise-ready Java web applications. <a shape="rect" class="external-link" href="http://struts.apache.org/downloads.html">Distributions of Struts 2</a> are available as a free download under the Apache License.</p><ul><li>For more about the Apache Struts project itself, visit the <a shape="rect" class="external-link" href="http://struts.apache.org/">project web site</a>.</li><li><strong>Quickstart</strong> with <a shape="rect" href="struts-2-maven-archetypes.html">Struts 2 Maven Archetypes</a>.</li><li>Struts 2 is extended using <a shape="rect" href="plugins.html">Plugins</a>. A list of available plugins is available at the <a shape="rect" href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=27839934">Struts 2 Plugin Registry</a>.</li><li>Tired of XML-based configurations, or need some extra agility? Try the <a shape="rect" href="convention-plugin.html">Co
 nvention Plugin</a> or its RESTful cousin, the <a shape="rect" href="rest-plugin.html">REST Plugin</a>.</li><li>Interested in books, articles, and presentations about Struts? Check out some <a shape="rect" href="other-resources.html">Other Resources</a>.</li><li>For other community-supported Struts resources, visit the <a shape="rect" class="external-link" href="http://cwiki.apache.org/S2WIKI/welcome-to-apache-struts2.html">Struts 2 Wiki</a>.</li></ul><p>The contents of the Struts 2 documentation wiki (what you're reading now) are distributed with each release, but maintained via the on-line wiki.</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>Have a suggestion, correction, or improvement? <a shape="rect" class="external-link" href="http://cwiki.apache.org/confluence/display/WW/Home">Log in</a> and leave 
 a comment on the appropriate page or file a ticket against the Struts 2 documentation. <a shape="rect" href="contributors-guide.html">We're always looking for help!</a></p></div></div><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>We've started planning the next version of Struts aka Struts 3 (or 2.5) which will break backward compatibility, if you want to join please add your two cents <a shape="rect" href="struts-next.html">here</a>.</p></div></div><h2 id="Home-GettingStarted">Getting Started</h2><p>The documentation is grouped into four areas.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="tutorials.html">Tutorials</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Our tutorials are designed to he
 lp you get started with the framework ASAP. We offer an all-purpose "Bootstrap" tutorial as well as specialty tutorials on portlets and database access.</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="guides.html">Guides</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Our in-depth technical guides focus on specific components of the framework, such as the Core framework, Struts Tags, and optional Extensions, as well as migrating from Struts 1 or WebWork 2.</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="faqs.html">FAQs</a> and <a shape="rect" href="cookbook.html">Cookbook</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Our FAQs and Cookbook examples provide a wide range of rapid-fire "HOWTOs" in question-and-answer format.</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="security-bulletins.html">Security Bulletins</a></p></th
 ><td colspan="1" rowspan="1" class="confluenceTd"><p>Our security bulletins explain any security issues and their solutions</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><img class="emoticon emoticon-yellow-star" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/star_yellow.png" data-emoticon-name="yellow-star" alt="(star)"> <a shape="rect" href="other-resources.html">Other Resources</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Books, articles, and presentations about Struts 2.</p></td></tr></tbody></table></div><p></p><h2 id="Home-CommunityWiki">Community Wiki</h2><p>The <a shape="rect" href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=14079">Struts 2 Community Wiki</a> is an additional resource. It is not distributed with Struts 2, and contributions to the community wiki do not require a CLA.</p><h2 id="Home-QuickLinks">Quick Links</h2><ul><li><a s
 hape="rect" class="external-link" href="http://struts.apache.org/">Apache Struts Home</a></li><li><a shape="rect" class="external-link" href="http://struts.apache.org/downloads.html">Distributions</a></li><li><a shape="rect" class="external-link" href="http://struts.apache.org/faqs.html">Project FAQ</a></li><li><a shape="rect" class="external-link" href="http://struts.apache.org/mail.html">Mailing lists</a></li><li><a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW">Issue Tracking (JIRA)</a></li><li><a shape="rect" class="external-link" href="http://cwiki.apache.org/S2WIKI/welcome-to-apache-struts2.html">Struts 2 Wiki space</a></li><li><a shape="rect" class="external-link" href="http://husted.com/central/" rel="nofollow">Struts Central</a></li></ul><h2 id="Home-Next:">Next: <a shape="rect" href="tutorials.html">Tutorials</a></h2></div>
+            <div id="ConfluenceContent"><p>Apache Struts 2 is an elegant, extensible framework for building enterprise-ready Java web applications. <a shape="rect" class="external-link" href="http://struts.apache.org/downloads.html">Distributions of Struts 2</a> are available as a free download under the Apache License.</p><ul><li>For more about the Apache Struts project itself, visit the <a shape="rect" class="external-link" href="http://struts.apache.org/">project web site</a>.</li><li><strong>Quickstart</strong> with <a shape="rect" href="struts-2-maven-archetypes.html">Struts 2 Maven Archetypes</a>.</li><li>Struts 2 is extended using <a shape="rect" href="plugins.html">Plugins</a>. A list of available plugins is available at the <a shape="rect" href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=27839934">Struts 2 Plugin Registry</a>.</li><li>Tired of XML-based configurations, or need some extra agility? Try the <a shape="rect" href="convention-plugin.html">Co
 nvention Plugin</a> or its RESTful cousin, the <a shape="rect" href="rest-plugin.html">REST Plugin</a>.</li><li>Interested in books, articles, and presentations about Struts? Check out some <a shape="rect" href="other-resources.html">Other Resources</a>.</li><li>For other community-supported Struts resources, visit the <a shape="rect" class="external-link" href="http://cwiki.apache.org/S2WIKI/welcome-to-apache-struts2.html">Struts 2 Wiki</a>.</li></ul><p>The contents of the Struts 2 documentation wiki (what you're reading now) are distributed with each release, but maintained via the on-line wiki.</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>Have a suggestion, correction, or improvement? <a shape="rect" class="external-link" href="http://cwiki.apache.org/confluence/display/WW/Home">Log in</a> and leave 
 a comment on the appropriate page or file a ticket against the Struts 2 documentation. <a shape="rect" href="contributors-guide.html">We're always looking for help!</a></p></div></div><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>We've started planning the next version of Struts aka Struts 3 (or 2.5) which will break backward compatibility, if you want to join please add your two cents <a shape="rect" href="struts-next.html">here</a>.</p></div></div><h2 id="Home-GettingStarted">Getting Started</h2><p>The documentation is grouped into four areas.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="tutorials.html">Tutorials</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Our tutorials are designed to he
 lp you get started with the framework ASAP. We offer an all-purpose "Bootstrap" tutorial as well as specialty tutorials on portlets and database access.</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="guides.html">Guides</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Our in-depth technical guides focus on specific components of the framework, such as the Core framework, Struts Tags, and optional Extensions, as well as migrating from Struts 1 or WebWork 2.</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="faqs.html">FAQs</a> and <a shape="rect" href="cookbook.html">Cookbook</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Our FAQs and Cookbook examples provide a wide range of rapid-fire "HOWTOs" in question-and-answer format.</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="security-bulletins.html">Security Bulletins</a></p></th
 ><td colspan="1" rowspan="1" class="confluenceTd"><p>Our security bulletins explain any security issues and their solutions</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><img class="emoticon emoticon-yellow-star" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/star_yellow.png" data-emoticon-name="yellow-star" alt="(star)"> <a shape="rect" href="other-resources.html">Other Resources</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Books, articles, and presentations about Struts 2.</p></td></tr></tbody></table></div><p></p><h2 id="Home-CommunityWiki">Community Wiki</h2><p>The <a shape="rect" href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=14079">Struts 2 Community Wiki</a> is an additional resource. It is not distributed with Struts 2, and contributions to the community wiki do not require a CLA.</p><h2 id="Home-QuickLinks">Quick Links</h2><ul><li><a s
 hape="rect" class="external-link" href="http://struts.apache.org/">Apache Struts Home</a></li><li><a shape="rect" class="external-link" href="http://struts.apache.org/downloads.html">Distributions</a></li><li><a shape="rect" class="external-link" href="http://struts.apache.org/faqs.html">Project FAQ</a></li><li><a shape="rect" class="external-link" href="http://struts.apache.org/mail.html">Mailing lists</a></li><li><a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/WW">Issue Tracking (JIRA)</a></li><li><a shape="rect" href="https://cwiki.apache.org/confluence/display/WW/Home">Struts 2 Wiki space</a></li></ul><h2 id="Home-Next:">Next: <a shape="rect" href="tutorials.html">Tutorials</a></h2></div>
         </div>
 
                     <div class="tabletitle">