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">


Reply via email to