This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/struts-site.git


The following commit(s) were added to refs/heads/master by this push:
     new 43e03c7  Adds some love to valdiation section
43e03c7 is described below

commit 43e03c768be1d63645367fe876ee4ee3ba60170d
Author: Lukasz Lenart <lukaszlen...@apache.org>
AuthorDate: Sun Oct 4 10:31:51 2020 +0200

    Adds some love to valdiation section
---
 source/core-developers/basic-validation.md         |  42 ++++-----
 source/core-developers/client-side-validation.md   |  49 +++++-----
 .../conditionalvisitor-validator.md                |  12 ++-
 source/core-developers/conversion-validator.md     |  65 ++++++++------
 source/core-developers/date-validator.md           |  18 ++--
 source/core-developers/double-validator.md         |  17 +++-
 source/core-developers/email-validator.md          |  17 +++-
 source/core-developers/expression-validator.md     |   9 +-
 .../core-developers/fieldexpression-validator.md   |  11 ++-
 source/core-developers/int-validator.md            |  15 +++-
 source/core-developers/namespace-annotation.md     |   7 +-
 source/core-developers/regex-validator.md          |  13 ++-
 source/core-developers/required-validator.md       |   9 +-
 source/core-developers/requiredstring-validator.md |  12 ++-
 source/core-developers/short-validator.md          |  15 +++-
 source/core-developers/stringlength-validator.md   |  18 +++-
 source/core-developers/url-validator.md            |  11 ++-
 source/core-developers/using-field-validators.md   | 100 +++++++++------------
 .../using-visitor-field-validator.md               |  73 +++++----------
 source/core-developers/validation.md               |  48 +++++-----
 source/core-developers/visitor-validator.md        |  14 ++-
 source/core-developers/zero-configuration.md       |  99 --------------------
 22 files changed, 322 insertions(+), 352 deletions(-)

diff --git a/source/core-developers/basic-validation.md 
b/source/core-developers/basic-validation.md
index 9db87bc..96c4281 100644
--- a/source/core-developers/basic-validation.md
+++ b/source/core-developers/basic-validation.md
@@ -1,20 +1,24 @@
 ---
 layout: core-developers
 title: Basic Validation
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # Basic Validation
+{:.no_toc}
 
-Let's configure a basic validation workflow, step by step\.
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
-## Step 1
-
-Create the input form\.
+Let's configure a basic validation workflow, step by step.
 
-{% comment %}start snippet 
id=basicValidation|javadoc=false|lang=xml|url=struts2/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-basic.jsp
 {% endcomment %}
+## Step 1
 
-```xml
+Create the input form.
 
+```html
 <html>
 <head>
        <title>Struts2 Showcase - Validation - Basic</title>
@@ -47,19 +51,13 @@ Create the input form\.
 </div>
 </body>
 </html>
-
 ```
 
-{% comment %}end snippet 
id=basicValidation|javadoc=false|lang=xml|url=struts2/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-basic.jsp
 {% endcomment %}
-
 ## Step 2
 
-Create the Action class\.
-
-{% comment %}start snippet 
id=quizAction|javadoc=false|lang=java|url=struts2/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/QuizAction.java
 {% endcomment %}
+Create the Action class.
 
 ```java
-
 public class QuizAction extends ActionSupport {
 
        private static final long serialVersionUID = -7505437345373234225L;
@@ -92,17 +90,12 @@ public class QuizAction extends ActionSupport {
                this.answer = answer;
        }
 }
-
-
 ```
 
-{% comment %}end snippet 
id=quizAction|javadoc=false|lang=java|url=struts2/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/QuizAction.java
 {% endcomment %}
-
 ## Step 3
 
-Create the validators\. The `validation.xml` format is either 
`<ActionClassName>-validation.xml` or 
`<ActionClassName>-<ActionAliasName>-validation.xml`\.
-
-{% comment %}start snippet 
id=quizValidators|javadoc=false|lang=xml|url=struts2/apps/showcase/src/main/resources/org/apache/struts2/showcase/validation/QuizAction-validation.xml
 {% endcomment %}
+Create the validators. The `validation.xml` format is either 
`<ActionClassName>-validation.xml`
+or `<ActionClassName>-<ActionAliasName>-validation.xml`.
 
 ```xml
 <!--
@@ -123,16 +116,11 @@ Create the validators\. The `validation.xml` format is 
either `<ActionClassName>
         </field-validator>
     </field>
 </validators>
-
-
 ```
 
-{% comment %}end snippet 
id=quizValidators|javadoc=false|lang=xml|url=struts2/apps/showcase/src/main/resources/org/apache/struts2/showcase/validation/QuizAction-validation.xml
 {% endcomment %}
-
 ## Step 4
 
-Make sure there is a result for "input" listed in the struts\.xml for when the 
validation fails:
-
+Make sure there is a result for "input" listed in the struts.xml for when the 
validation fails:
 
 ```xml
 <action name="HelloWorld" class="tutorial.HelloWorld">
@@ -143,4 +131,4 @@ Make sure there is a result for "input" listed in the 
struts\.xml for when the v
 
 ```
 
-If you don't have this, you'll get a: "No result defined for action 
xxx\.xxx\.tutorial\.HellowWorld and result input" error
+If you don't have this, you'll get a: "No result defined for action 
xxx.xxx.tutorial.HellowWorld and result input" error.
diff --git a/source/core-developers/client-side-validation.md 
b/source/core-developers/client-side-validation.md
index 5bcc14b..28f6817 100644
--- a/source/core-developers/client-side-validation.md
+++ b/source/core-developers/client-side-validation.md
@@ -1,38 +1,44 @@
 ---
 layout: core-developers
 title: Client Side Validation
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # Client Side Validation
+{:.no_toc}
 
-The framework adds support for client\-side validation on top of the standard 
validation framework\.
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
-Client\-side validation can be enabled on a per\-form basis by specifying 
`validate="true"` in the _form_  tag\.
+## Basics
 
+The framework adds support for client-side validation on top of the standard 
validation framework.
+
+Client-side validation can be enabled on a per-form basis by specifying 
`validate="true"` in the _form_ tag.
 
 ```jsp
 <s:form name="test" action="javascriptValidation" validate="true">
   ...
 </s:form>
-
 ```
 
-If a `name` for the form is not given, the action mapping name will be used as 
the form name\. Otherwise, a correct `action` and `namespace` attributes must 
be provided to the `<saf:form>` tag\.
-
-**Referencing "submitProfile" in the "/user" namespace**
+If a `name` for the form is not given, the action mapping name will be used as 
the form name. Otherwise, a correct 
+`action` and `namespace` attributes must be provided to the `<saf:form>` tag.
 
+## Referencing "submitProfile" in the "/user" namespace
 
 ```jsp
 <s:form namespace="/user" action="submitProfile" validate="true">
   ...
 </s:form>
-
 ```
 
-Technically, the form's action attribute can refer to a "path" that includes 
the namespace and action as a URI\. But, client\-side validation **requires** 
that the action name and namespeact to be set separately\.
-
-**Won't work with client\-side validation\!**
+Technically, the form's action attribute can refer to a "path" that includes 
the namespace and action as a URI. 
+But, client-side validation **requires** that the action name and namespeact 
to be set separately.
 
+## Won't work with client-side validation!
 
 ```jsp
 <s:form action="/user/submitProfile.action" validate="true">
@@ -41,23 +47,20 @@ Technically, the form's action attribute can refer to a 
"path" that includes the
 
 ```
 
-All the usual [validation configuration](#PAGE_14292) steps apply to 
client\-side validation\. Client\-side validation uses the same validation 
rules as server\-side validation\. If server\-side validation doesn't work, 
then client\-side validation won't work either\.
-
-**(i) The left hand doesn't know \.\.\.**
-
-
-> 
-
-> 
+All the usual [validation configuration](validation) steps apply to 
client-side validation. Client-side validation 
+uses the same validation rules as server-side validation. If server-side 
validation doesn't work, then client-side 
+validation won't work either.
 
-> The required attribute on many _Struts Tags_  is not integrated with 
client\-side validation\! The tag attribute is used by certain themes (like 
xhtml) to put a visual marker (usually '\*') next to the field\. The tag 
doesn't know if the validation system actually "requires" the field or not\.
+## The left hand doesn't know ...
 
-> 
+> The required attribute on many _Struts Tags_ is not integrated with 
client-side validation! The tag attribute is used 
+> by certain themes (like xhtml) to put a visual marker (usually '*') next to 
the field. The tag doesn't know 
+> if the validation system actually "requires" the field or not.
 
 ## Client Side Validation Types
 
-There are two styles of client side validation\.
+There are two styles of client side validation.
 
-|[Pure JavaScript Client Side 
Validation](pure-java-script-client-side-validation.html)|Used by the _xhtml 
theme_  and _css\_xhtml theme_ |
+|[Pure JavaScript Client Side 
Validation](pure-java-script-client-side-validation)|Used by the _xhtml theme_ 
and _css_xhtml theme_|
 
|-----------------------------------------------------|--------------------------------------------------|
-|[AJAX Client Side Validation](ajax-client-side-validation.html)|Used by the 
_ajax theme_ |
+|[AJAX Client Side Validation](ajax-client-side-validation)|Used by the _ajax 
theme_ |
diff --git a/source/core-developers/conditionalvisitor-validator.md 
b/source/core-developers/conditionalvisitor-validator.md
index 8d02407..8e5fcfe 100644
--- a/source/core-developers/conditionalvisitor-validator.md
+++ b/source/core-developers/conditionalvisitor-validator.md
@@ -1,13 +1,21 @@
 ---
 layout: core-developers
 title: conditionalvisitor validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # conditionalvisitor validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
-The ConditionalVisitorFieldValidator will forward validation to the 
VisitorFieldValidator only if the expression will evaluate to true.
+The ConditionalVisitorFieldValidator will forward validation to the 
VisitorFieldValidator only if the expression 
+will evaluate to true.
 
 ## Parameters
 
@@ -15,7 +23,7 @@ The ConditionalVisitorFieldValidator will forward validation 
to the VisitorField
 
 ## Examples
 
-```
+```xml
 <field name="colleaguePosition">
     <field-validator type="conditionalvisitor">
         <param name="expression">reason == 'colleague' and colleaguePositionID 
== 'OTHER'</param>
diff --git a/source/core-developers/conversion-validator.md 
b/source/core-developers/conversion-validator.md
index f7ec644..6479eee 100644
--- a/source/core-developers/conversion-validator.md
+++ b/source/core-developers/conversion-validator.md
@@ -1,9 +1,16 @@
 ---
 layout: core-developers
 title: conversion validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # conversion validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
@@ -15,7 +22,7 @@ Field Validator that checks if a conversion error occurred 
for this field.
 
 ## Examples
 
-```
+```xml
 <!-- Plain Validator Syntax -->
 <validator type="conversion">
         <param name="fieldName">myField</param>
@@ -32,11 +39,15 @@ Field Validator that checks if a conversion error occurred 
for this field.
 
 ## Repopulating Field upon conversion Error
 
- The capability of auto-repopulating the stack with a fake parameter map when 
a conversion error has occurred can be done with `repopulateField` property set 
to `true`.
+> The capability of auto-repopulating the stack with a fake parameter map when 
a conversion error has occurred can be 
+> done with `repopulateField` property set to `true`.
 
-This is typically useful when one wants to repopulate the field with the 
original value when a conversion error occurred. Eg. with a textfield that only 
allows an Integer (the action class have an Integer field declared), upon 
conversion error, the incorrectly entered integer (maybe a text 'one') will not 
appear when dispatched back. With `repopulateField` property set to true, it 
will, meaning the textfield will have 'one' as its value upon conversion error.
+This is typically useful when one wants to repopulate the field with the 
original value when a conversion error occurred. 
+Eg. with a textfield that only allows an Integer (the action class have an 
Integer field declared), upon conversion error, 
+the incorrectly entered integer (maybe a text 'one') will not appear when 
dispatched back. With `repopulateField` 
+property set to true, it will, meaning the textfield will have 'one' as its 
value upon conversion error.
 
-```
+```html
 <!-- myJspPage.jsp -->
 <s:form action="someAction" method="POST">
   ....
@@ -46,36 +57,38 @@ This is typically useful when one wants to repopulate the 
field with the origina
 </s:form>
 ```
 
-```
-<!-- xwork.xml -->
-<xwork>
-<include file="xwork-default.xml" />
+```xmls
+<struts>
 ....
-<package name="myPackage" extends="xwork-default">
-  ....
-  <action name="someAction" class="example.MyActionSupport.java">
-     <result name="input">myJspPage.jsp</result>
-     <result>success.jsp</result>
-  </action>
-  ....
-</package>
+    <package name="myPackage" extends="struts-default">
+      ....
+      <action name="someAction" class="example.MyActionSupport.java">
+         <result name="input">myJspPage.jsp</result>
+         <result>success.jsp</result>
+      </action>
+      ....
+    </package>
 ....
-</xwork>
+</struts>
 ```
 
-```
-<!-- MyActionSupport.java -->
+```java
+/** MyActionSupport.java **/
 public class MyActionSupport extends ActionSupport {
-   private Integer myIntegerField;
- 
-   public Integer getMyIntegerField() { return this.myIntegerField; }
-   public void setMyIntegerField(Integer myIntegerField) {
-      this.myIntegerField = myIntegerField;
-   }
+    
+    private Integer myIntegerField;
+    
+    public Integer getMyIntegerField() { 
+        return this.myIntegerField; 
+    }
+    
+    public void setMyIntegerField(Integer myIntegerField) {
+        this.myIntegerField = myIntegerField;
+    }
 }
 ```
 
-```
+```xml
 <!-- MyActionSupport-someAction-validation.xml -->
 <validators>
   ...
diff --git a/source/core-developers/date-validator.md 
b/source/core-developers/date-validator.md
index e30168d..5a9fadd 100644
--- a/source/core-developers/date-validator.md
+++ b/source/core-developers/date-validator.md
@@ -1,15 +1,23 @@
 ---
 layout: core-developers
 title: date validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # date validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
 Field Validator that checks if the date supplied is within a specific range.
 
-**NOTE:** If no date converter is specified, `XWorkBasicConverter` will kick 
in to do the date conversion, which by default using the `Date.SHORT` format 
using the specified locale else falling back to the system default locale.
+> NOTE: If no date converter is specified, `XWorkBasicConverter` will kick in 
to do the date conversion, which 
+> by default using the `Date.SHORT` format using the specified locale else 
falling back to the system default locale.
 
 ## Parameters
 
@@ -20,14 +28,14 @@ Field Validator that checks if the date supplied is within 
a specific range.
 - `minExpression` - expression to calculate the minimum value (if none is 
specified, it will not be checked).
 - `maxExpression` - expression to calculate the maximum value (if none is 
specified, it will not be checked).
 
-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.
+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.
 
-> Warning
-> Do not use `${minExpression}` and `${maxExpression}` as an expression as 
this will turn into infinitive loop!
+> Warning: Do not use `${minExpression}` and `${maxExpression}` as an 
expression as this will turn into infinitive loop!
 
 ## Examples
 
-```
+```xml
 <validators>
     <!-- Plain Validator syntax -->
     <validator type="date">
diff --git a/source/core-developers/double-validator.md 
b/source/core-developers/double-validator.md
index 3f38b57..a925407 100644
--- a/source/core-developers/double-validator.md
+++ b/source/core-developers/double-validator.md
@@ -1,9 +1,16 @@
 ---
 layout: core-developers
 title: double validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # double validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
@@ -21,14 +28,16 @@ Field Validator that checks if the double specified is 
within a certain range.
 - `minExclusiveExpression` - the minimum exclusive value specified as a OGNL 
expression (if none is specified, it will not be checked).
 - `maxExclusiveExpression` - the maximum exclusive value specified as a OGNL 
expression (if none is specified, it will not be checked).
 
-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.
+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.
 
-> Warning
-> Do not use `${minInclusiveExpression}`, `${maxInclusiveExpression}`, 
`${minExclusiveExpressionExpression}` and `${maxExclusive}` as an expression as 
this will turn into infinitive loop!
+> Warning: do not use `${minInclusiveExpression}`, 
`${maxInclusiveExpression}`, `${minExclusiveExpressionExpression}` 
+> and `${maxExclusive}` as an expression as this will turn into infinitive 
loop!
 
 ## Examples
 
-```
+```xml
 <validators>
     <!-- Plain Validator Syntax -->
     <validator type="double">
diff --git a/source/core-developers/email-validator.md 
b/source/core-developers/email-validator.md
index 73b3a48..a3e78cb 100644
--- a/source/core-developers/email-validator.md
+++ b/source/core-developers/email-validator.md
@@ -1,9 +1,16 @@
 ---
 layout: core-developers
 title: email validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # email validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
@@ -12,9 +19,11 @@ EmailValidator checks that a given String field, if not 
empty, is a valid email
 The regular expression used to validate that the string is an email address is:
 
 ```
-\\b^['_a-z0-9-\\+](\\.['_a-z0-9-\\+])@[a-z0-9-](\\.[a-z0-9-])\\.([a-z]{2,6})$\\b
+\\b^['_a-z0-9-\\+]+(\\.['_a-z0-9-\\+]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,6})$\\b
 ```
 
+> This Regex can change, please always check in the [source 
code](https://github.com/apache/struts/blob/master/core/src/main/java/com/opensymphony/xwork2/validator/validators/EmailValidator.java#L83)
+
 You can also specify `expression`, `caseSensitive` and `trim` params as a OGNL 
expression, see the example below.
 
 ## Parameters
@@ -23,12 +32,12 @@ You can also specify `expression`, `caseSensitive` and 
`trim` params as a OGNL e
 
 Check also documentation of the `RegexpValidator` for more details - the 
EmailValidator is based on it.
 
-> Warning
-> Do not use `${regexExpression}`, `${caseSensitiveExpression}` and 
`${trimExpression}` as an expression as this will turn into infinitive loop!
+> Warning: do not use `${regexExpression}`, `${caseSensitiveExpression}` and 
`${trimExpression}` as an expression 
+> as this will turn into infinitive loop!
 
 ## Examples
 
-```
+```xml
 <!-- Plain Validator Syntax -->
 <validators>
     <validator type="email">
diff --git a/source/core-developers/expression-validator.md 
b/source/core-developers/expression-validator.md
index 3d897b4..e49dee1 100644
--- a/source/core-developers/expression-validator.md
+++ b/source/core-developers/expression-validator.md
@@ -1,9 +1,16 @@
 ---
 layout: core-developers
 title: expression validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # expression validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
@@ -15,7 +22,7 @@ A Non-Field Level validator that validates based on regular 
expression supplied.
 
 ## Examples
 
-```
+```xml
 <validators>
       <validator type="expression">
          <param name="expression"> .... </param>
diff --git a/source/core-developers/fieldexpression-validator.md 
b/source/core-developers/fieldexpression-validator.md
index e39ae9e..b2e595d 100644
--- a/source/core-developers/fieldexpression-validator.md
+++ b/source/core-developers/fieldexpression-validator.md
@@ -1,9 +1,16 @@
 ---
 layout: core-developers
 title: fieldexpression validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # fieldexpression validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
@@ -16,7 +23,7 @@ Validates a field using an OGNL expression.
 
 ## Examples
 
-```
+```xml
 <!-- Plain Validator Syntax -->
 <validators>
     <!-- Plain Validator Syntax -->
@@ -33,5 +40,5 @@ Validates a field using an OGNL expression.
             <message>My credit limit should be MORE than my 
girlfriend</message>
         </field-validator>
     </field>
-</vaidators>
+</validators>
 ```
diff --git a/source/core-developers/int-validator.md 
b/source/core-developers/int-validator.md
index 8fd31e9..afa990d 100644
--- a/source/core-developers/int-validator.md
+++ b/source/core-developers/int-validator.md
@@ -1,9 +1,16 @@
 ---
 layout: core-developers
 title: int validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # int validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
@@ -18,14 +25,14 @@ Field Validator that checks if the integer specified is 
within a certain range.
 - `minExpression` - expression to calculate the minimum value (if none is 
specified, it will not be checked)
 - `maxExpression` - expression to calculate the maximum value (if none is 
specified, it will not be checked) 
 
-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.
+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.
 
-> Warning
-> Do not use `${minExpression}` and `${maxExpression}` as an expression as 
this will turn into infinitive loop!
+> Warning: do not use `${minExpression}` and `${maxExpression}` as an 
expression as this will turn into infinitive loop!
 
 ## Examples
 
-```
+```xml
 <validators>
      <!-- Plain Validator Syntax -->
      <validator type="int">
diff --git a/source/core-developers/namespace-annotation.md 
b/source/core-developers/namespace-annotation.md
index f020a21..4eb18ab 100644
--- a/source/core-developers/namespace-annotation.md
+++ b/source/core-developers/namespace-annotation.md
@@ -7,14 +7,15 @@ title: Namespace Annotation
 
 ## Namespace Annotation
 
-The `@Namespace` annotation allows the definition of an Action's namespace in 
the `Action` class rather than based on [Zero 
Configuration](zero-configuration.html)'s conventions\.
+The `@Namespace` annotation allows the definition of an Action's namespace in 
the `Action` class rather than based 
+on [Convention Plugin](../plugins/convention/)'s conventions.
 
 ### Usage
 
-This annotation is placed at the class level\.
+This annotation is placed at the class level.
 
 ### Parameters
 
 | Name | Type | Required | Description |
 |------|------|----------|-------------|
-| value | String | true | The namespace to use for the annotated action 
class\. |
+| value | String | true | The namespace to use for the annotated action class.|
diff --git a/source/core-developers/regex-validator.md 
b/source/core-developers/regex-validator.md
index f14b3a8..697157e 100644
--- a/source/core-developers/regex-validator.md
+++ b/source/core-developers/regex-validator.md
@@ -1,9 +1,16 @@
 ---
 layout: core-developers
 title: regex validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # regex validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
@@ -21,12 +28,12 @@ Validates a string field using a regular expression.
 
 You can mix normal params with expression aware params but thus was not tested.
 
-> Warning
-> Do not use `${regexExpression}`, `${caseSensitiveExpression}` and 
`${trimExpression}` as an expression as this will turn into infinitive loop! 
+> Warning: do not use `${regexExpression}`, `${caseSensitiveExpression}` and 
`${trimExpression}` as an expression 
+> as this will turn into infinitive loop! 
 
 ## Examples
 
-```
+```xml
 <validators>
     <!-- Plain Validator Syntax -->
     <validator type="regex">
diff --git a/source/core-developers/required-validator.md 
b/source/core-developers/required-validator.md
index 2fdee0e..d11f03e 100644
--- a/source/core-developers/required-validator.md
+++ b/source/core-developers/required-validator.md
@@ -1,9 +1,16 @@
 ---
 layout: core-developers
 title: required validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # required validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
@@ -15,7 +22,7 @@ RequiredFieldValidator checks if the specified field is not 
null.
 
 ## Examples
 
-```
+```xml
 <validators>
     <!-- Plain Validator Syntax -->
     <validator type="required">
diff --git a/source/core-developers/requiredstring-validator.md 
b/source/core-developers/requiredstring-validator.md
index 996f969..cecf957 100644
--- a/source/core-developers/requiredstring-validator.md
+++ b/source/core-developers/requiredstring-validator.md
@@ -1,13 +1,21 @@
 ---
 layout: core-developers
 title: requiredstring validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # requiredstring validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
-RequiredStringValidator checks that a String field is non-null and has a 
length > 0. (i.e. it isn't ""). The `trim` parameter determines whether it will 
`String#trim()` the String before performing the length check. If unspecified, 
the String will be trimmed.
+RequiredStringValidator checks that a String field is non-null and has a 
length > 0. (i.e. it isn't ""). The `trim` parameter 
+determines whether it will `String#trim()` the String before performing the 
length check. If unspecified, the String will be trimmed.
 
 ## Parameters
 
@@ -17,7 +25,7 @@ RequiredStringValidator checks that a String field is 
non-null and has a length
 
 ## Examples
 
-```
+```xml
 <validators>
     <!-- Plain-Validator Syntax -->
     <validator type="requiredstring">
diff --git a/source/core-developers/short-validator.md 
b/source/core-developers/short-validator.md
index dad4edf..e53cb78 100644
--- a/source/core-developers/short-validator.md
+++ b/source/core-developers/short-validator.md
@@ -1,9 +1,16 @@
 ---
 layout: core-developers
 title: short validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # short validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
@@ -18,14 +25,14 @@ Field Validator that checks if the short specified is 
within a certain range.
 - `minExpression` - expression to calculate the minimum value (if none is 
specified, it will not be checked).
 - `maxExpression` - expression to calculate the maximum value (if none is 
specified, it will not be checked).
 
-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.
+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.
 
-> Warning
-> Do not use `${minExpression}` and `${maxExpression}` as an expression as 
this will turn into infinitive loop!
+> Warning: do not use `${minExpression}` and `${maxExpression}` as an 
expression as this will turn into infinitive loop!
 
 ## Examples
 
-```
+```xml
 <validators>
     <!-- Plain Validator Syntax -->
     <validator type="short">
diff --git a/source/core-developers/stringlength-validator.md 
b/source/core-developers/stringlength-validator.md
index 5a8fe4c..2c9995c 100644
--- a/source/core-developers/stringlength-validator.md
+++ b/source/core-developers/stringlength-validator.md
@@ -1,13 +1,23 @@
 ---
 layout: core-developers
 title: stringlength validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # stringlength validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
-StringLengthFieldValidator checks that a String field is of a certain length. 
If the `minLength` parameter is specified, it will make sure that the String 
has at least that many characters. If the `maxLength` parameter is specified, 
it will make sure that the String has at most that many characters. The `trim` 
parameter determines whether it will `String#trim()` the String before 
performing the length check. If unspecified, the String will be trimmed.
+StringLengthFieldValidator checks that a String field is of a certain length. 
If the `minLength` parameter is specified, 
+it will make sure that the String has at least that many characters. If the 
`maxLength` parameter is specified, it will 
+make sure that the String has at most that many characters. The `trim` 
parameter determines whether it will `String#trim()` 
+the String before performing the length check. If unspecified, the String will 
be trimmed.
 
 ## Parameters
 
@@ -19,12 +29,12 @@ StringLengthFieldValidator checks that a String field is of 
a certain length. If
 - `minLengthExpression` - (Optional) String. Defines the min length param as 
an OGNL expression.
 - `trimExpression` - (Optional) String. Defines th trim param as an OGNL 
expression.
 
-> Warning
-> Do not use `${minLengthExpression}`, `${maxLengthExpression}` and 
`${trimExpression}` as an expression as this will turn into infinitive loop!
+> Warning: do not use `${minLengthExpression}`, `${maxLengthExpression}` and 
`${trimExpression}` as an expression 
+> as this will turn into infinitive loop!
 
 ## Examples
 
-```
+```xml
 <validators>
     <!-- Plain Validator Syntax -->
     <validator type="stringlength">
diff --git a/source/core-developers/url-validator.md 
b/source/core-developers/url-validator.md
index 8d4a1e9..d3414dc 100644
--- a/source/core-developers/url-validator.md
+++ b/source/core-developers/url-validator.md
@@ -1,9 +1,16 @@
 ---
 layout: core-developers
 title: url validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # url validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
@@ -17,7 +24,7 @@ URLValidator checks that a given field is a String and a 
valid URL.
 
 ## Examples
 
-```
+```xml
 <validators>
     <!-- Plain Validator Syntax -->
     <validator type="url">
@@ -34,4 +41,4 @@ URLValidator checks that a given field is a String and a 
valid URL.
 </validators>
 ```
 
-See more details inĀ [UrlValidator Annotation](url-validator-annotation.html)
+See more details in [UrlValidator Annotation](url-validator-annotation)
diff --git a/source/core-developers/using-field-validators.md 
b/source/core-developers/using-field-validators.md
index eabfcb6..1ce668a 100644
--- a/source/core-developers/using-field-validators.md
+++ b/source/core-developers/using-field-validators.md
@@ -1,68 +1,64 @@
 ---
 layout: core-developers
 title: Using Field Validators
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # Using Field Validators
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
 The followings show a simple example using Struts' Field Validators
 
-__Step 1__
+### Step 1
 
 Create the jsp page
 
-{% comment %}start snippet 
id=fieldValidatorsExample|lang=xml|javadoc=false|url=struts2/apps/showcase/src/main/webapp/WEB-INF/validation/fieldValidatorsExample.jsp
 {% endcomment %}
-
-```xml
-
-            <h3>All Field Errors Will Appear Here</h3>
-            <s:fielderror/>
-            <hr/>
-
-            <h3>Field Error due to 'Required String Validator Field' Will 
Appear Here</h3>
-            <s:fielderror>
-                <s:param value="%{'requiredStringValidatorField'}"/>
-            </s:fielderror>
-            <hr/>
-
-            <h3>Field Error due to 'String Length Validator Field' Will Appear 
Here</h3>
-            <s:fielderror>
-                <s:param>stringLengthValidatorField</s:param>
-            </s:fielderror>
-            <hr/>
-
-            <s:form action="submitFieldValidatorsExamples" 
namespace="/validation" method="POST" theme="xhtml">
-                <s:textfield label="Required Validator Field" 
name="requiredValidatorField"/>
-                <s:textfield label="Required String Validator Field" 
name="requiredStringValidatorField"/>
-                <s:textfield label="Integer Validator Field" 
name="integerValidatorField"/>
-                <s:textfield label="Date Validator Field" 
name="dateValidatorField"/>
-                <s:textfield label="Email Validator Field" 
name="emailValidatorField"/>
-                <s:textfield label="URL Validator Field" 
name="urlValidatorField"/>
-                <s:textfield label="String Length Validator Field" 
name="stringLengthValidatorField"/>
-                <s:textfield label="Regex Validator Field" 
name="regexValidatorField"/>
-                <s:textfield label="Field Expression Validator Field" 
name="fieldExpressionValidatorField"/>
-                <s:submit label="Submit" cssClass="btn btn-primary"/>
-            </s:form>
-
-
+```html
+
+<h3>All Field Errors Will Appear Here</h3>
+<s:fielderror/>
+<hr/>
+
+<h3>Field Error due to 'Required String Validator Field' Will Appear Here</h3>
+<s:fielderror>
+    <s:param value="%{'requiredStringValidatorField'}"/>
+</s:fielderror>
+<hr/>
+
+<h3>Field Error due to 'String Length Validator Field' Will Appear Here</h3>
+<s:fielderror>
+    <s:param>stringLengthValidatorField</s:param>
+</s:fielderror>
+<hr/>
+
+<s:form action="submitFieldValidatorsExamples" namespace="/validation" 
method="POST" theme="xhtml">
+    <s:textfield label="Required Validator Field" 
name="requiredValidatorField"/>
+    <s:textfield label="Required String Validator Field" 
name="requiredStringValidatorField"/>
+    <s:textfield label="Integer Validator Field" name="integerValidatorField"/>
+    <s:textfield label="Date Validator Field" name="dateValidatorField"/>
+    <s:textfield label="Email Validator Field" name="emailValidatorField"/>
+    <s:textfield label="URL Validator Field" name="urlValidatorField"/>
+    <s:textfield label="String Length Validator Field" 
name="stringLengthValidatorField"/>
+    <s:textfield label="Regex Validator Field" name="regexValidatorField"/>
+    <s:textfield label="Field Expression Validator Field" 
name="fieldExpressionValidatorField"/>
+    <s:submit label="Submit" cssClass="btn btn-primary"/>
+</s:form>
 ```
 
-{% comment %}end snippet 
id=fieldValidatorsExample|lang=xml|javadoc=false|url=struts2/apps/showcase/src/main/webapp/WEB-INF/validation/fieldValidatorsExample.jsp
 {% endcomment %}
-
-__Step 2__
+### Step 2
 
 Create the action class
 
-{% comment %}start snippet 
id=fieldValidatorsExample|javadoc=false|lang=java|url=struts2/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/FieldValidatorsExampleAction.java
 {% endcomment %}
-
 ```java
- */
 public class FieldValidatorsExampleAction extends 
AbstractValidationActionSupport {
 
-    private static final long serialVersionUID = -4829381083003175423L;
-
     private String requiredValidatorField = null;
     private String requiredStringValidatorField = null;
     private Integer integerValidatorField = null;
@@ -147,21 +143,13 @@ public class FieldValidatorsExampleAction extends 
AbstractValidationActionSuppor
         this.urlValidatorField = urlValidatorField;
     }
 }
-
-/**
-
 ```
 
-{% comment %}end snippet 
id=fieldValidatorsExample|javadoc=false|lang=java|url=struts2/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/FieldValidatorsExampleAction.java
 {% endcomment %}
-
-__Step 3__
+### Step 3
 
-Create the validator\.xml\.
-
-{% comment %}start snippet 
id=fieldValidatorsExample|javadoc=false|lang=xml|url=struts2/apps/showcase/src/main/resources/org/apache/struts2/showcase/validation/FieldValidatorsExampleAction-submitFieldValidatorsExamples-validation.xml
 {% endcomment %}
+Create the `validator.xml`.
 
 ```xml
-               
 <validators>
        <field name="requiredValidatorField">
                <field-validator type="required">
@@ -209,7 +197,7 @@ Create the validator\.xml\.
        <field name="regexValidatorField">
                <field-validator type="regex">
                        <param name="regex"><![CDATA[ [^<>]+ ]]></param>
-                       <message><![CDATA[ regexValidatorField must match a 
regexp (.*\.txt) if specified ]]></message>
+                       <message><![CDATA[ regexValidatorField must match a 
regexp (.*.txt) if specified ]]></message>
                </field-validator>
        </field>
        <field name="fieldExpressionValidatorField">
@@ -219,8 +207,4 @@ Create the validator\.xml\.
                </field-validator>
        </field>
 </validators>
-
-
 ```
-
-{% comment %}end snippet 
id=fieldValidatorsExample|javadoc=false|lang=xml|url=struts2/apps/showcase/src/main/resources/org/apache/struts2/showcase/validation/FieldValidatorsExampleAction-submitFieldValidatorsExamples-validation.xml
 {% endcomment %}
diff --git a/source/core-developers/using-visitor-field-validator.md 
b/source/core-developers/using-visitor-field-validator.md
index 8c65a67..83504b0 100644
--- a/source/core-developers/using-visitor-field-validator.md
+++ b/source/core-developers/using-visitor-field-validator.md
@@ -1,48 +1,43 @@
 ---
 layout: core-developers
 title: Using Visitor Field Validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # Using Visitor Field Validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
 The followings show a simple example using Webwork's Field Validators
 
-__Step 1__
-
-Create the jsp page\.
-
-{% comment %}start snippet 
id=visitorValidatorsExample|lang=xml|javadoc=false|url=struts2/apps/showcase/src/main/webapp/WEB-INF/validation/visitorValidatorsExample.jsp
 {% endcomment %}
-
-```xml
+### Step 1
 
-                       <s:fielderror cssClass="alert alert-error"/>
-
-                       <s:form method="POST" 
action="submitVisitorValidatorsExamples" namespace="/validation">
-                               <s:textfield name="user.name" label="User 
Name"/>
-                               <s:textfield name="user.age" label="User Age"/>
-                               <s:textfield name="user.birthday" 
label="Birthday"/>
-                               <s:submit label="Submit" cssClass="btn 
btn-primary"/>
-                       </s:form>
+Create the jsp page.
 
+```html
+<s:fielderror cssClass="alert alert-error"/>
 
+<s:form method="POST" action="submitVisitorValidatorsExamples" 
namespace="/validation">
+    <s:textfield name="user.name" label="User Name"/>
+    <s:textfield name="user.age" label="User Age"/>
+    <s:textfield name="user.birthday" label="Birthday"/>
+    <s:submit label="Submit" cssClass="btn btn-primary"/>
+</s:form>
 ```
 
-{% comment %}end snippet 
id=visitorValidatorsExample|lang=xml|javadoc=false|url=struts2/apps/showcase/src/main/webapp/WEB-INF/validation/visitorValidatorsExample.jsp
 {% endcomment %}
-
-__Step 2__
+### Step 2
 
-Create the action class\.
-
-{% comment %}start snippet 
id=visitorValidatorsExample|javadoc=false|lang=java|url=struts2/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/VisitorValidatorsExampleAction.java
 {% endcomment %}
+Create the action class.
 
 ```java
-
 public class VisitorValidatorsExampleAction extends 
AbstractValidationActionSupport {
 
-       private static final long serialVersionUID = 4375454086939598216L;
-
        private User user;
 
        public User getUser() {
@@ -53,46 +48,20 @@ public class VisitorValidatorsExampleAction extends 
AbstractValidationActionSupp
                this.user = user;
        }
 }
-
-
-
 ```
 
-{% comment %}end snippet 
id=visitorValidatorsExample|javadoc=false|lang=java|url=struts2/apps/showcase/src/main/java/org/apache/struts2/showcase/validation/VisitorValidatorsExampleAction.java
 {% endcomment %}
-
-__Step 3__
-
-Create the validator\.xml\.
-
-{% comment %}start snippet 
id=visitorValidatorsExample|javadoc=false|lang=xml|url=struts2/apps/showcase/src/main/resources/org/apache/struts2/showcase/validation/VisitorValidatorsExampleAction-submitVisitorValidatorsExamples-validation.xml
 {% endcomment %}
+### Step 3
 
+Create the `validator.xml`.
 
 ```xml
-
-
-
 <validators>
-
        <field name="user">
-
                <field-validator type="visitor">
-
                        <param name="context">userContext</param>
-
                        <param name="appendPrefix">true</param>
-
                        <message>User:</message>
-
                </field-validator>
-
        </field>
-
 </validators>
-
-
-
-
 ```
-
-
-{% comment %}end snippet 
id=visitorValidatorsExample|javadoc=false|lang=xml|url=struts2/apps/showcase/src/main/resources/org/apache/struts2/showcase/validation/VisitorValidatorsExampleAction-submitVisitorValidatorsExamples-validation.xml
 {% endcomment %}
diff --git a/source/core-developers/validation.md 
b/source/core-developers/validation.md
index d39ff0e..4d98dfd 100644
--- a/source/core-developers/validation.md
+++ b/source/core-developers/validation.md
@@ -26,7 +26,7 @@ for the action.
 
 ## Using Annotations
 
-[Annotations](validation-annotation.html) can be used as an alternative to XML 
for validation.
+[Annotations](validation-annotation) can be used as an alternative to XML for 
validation.
 
 ## Bean Validation
 
@@ -37,14 +37,14 @@ See the [Plugin Page](../plugins/) for details.
 
 In all examples given here, the validation message displayed is given in plain 
English - to internationalize the message, 
 put the string in a properties file and use a property key instead, specified 
by the 'key' attribute. It will be looked 
-up by the framework (see [Localization](localization.html)).
+up by the framework (see [Localization](localization)).
 
-1. [Basic Validation](basic-validation.html)
-2. [Client-side Validation](client-side-validation.html)
+1. [Basic Validation](basic-validation)
+2. [Client-side Validation](client-side-validation)
 3. _AJAX Validation_ 
-4. [Using Field Validators](using-field-validators.html)
-5. [Using Non Field Validators](using-non-field-validators.html)
-6. [Using Visitor Field Validator](using-visitor-field-validator.html)
+4. [Using Field Validators](using-field-validators)
+5. [Using Non Field Validators](using-non-field-validators)
+6. [Using Visitor Field Validator](using-visitor-field-validator)
 7. _How do we repopulate controls when validation fails_  (FAQ entry)
 
 ## Bundled Validators
@@ -53,21 +53,21 @@ When using a Field Validator, Field Validator Syntax is 
**ALWAYS** preferable th
 as it facilitates grouping of field-validators according to fields. This is 
very handy especially if a field needs 
 to have many field-validators which is almost always the case.
 
-1. [conversion validator](conversion-validator.html)
-2. [date validator](date-validator.html)
-3. [double validator](double-validator.html)
-4. [email validator](email-validator.html)
-5. [expression validator](expression-validator.html)
-6. [fieldexpression validator](fieldexpression-validator.html)
-7. [int validator](int-validator.html)
-8. [regex validator](regex-validator.html)
-9. [required validator](required-validator.html)
-10. [requiredstring validator](requiredstring-validator.html)
-11. [short validator](short-validator.html)
-12. [stringlength validator](stringlength-validator.html)
-13. [url validator](url-validator.html)
-14. [visitor validator](visitor-validator.html)
-15. [conditionalvisitor validator](conditionalvisitor-validator.html)
+1. [conversion validator](conversion-validator)
+2. [date validator](date-validator)
+3. [double validator](double-validator)
+4. [email validator](email-validator)
+5. [expression validator](expression-validator)
+6. [fieldexpression validator](fieldexpression-validator)
+7. [int validator](int-validator)
+8. [regex validator](regex-validator)
+9. [required validator](required-validator)
+10. [requiredstring validator](requiredstring-validator)
+11. [short validator](short-validator)
+12. [stringlength validator](stringlength-validator)
+13. [url validator](url-validator)
+14. [visitor validator](visitor-validator)
+15. [conditionalvisitor validator](conditionalvisitor-validator)
 
 ## Registering Validators
 
@@ -89,7 +89,7 @@ our own validators.
 
 > **Struts 2.0.7 and Prior**
 > The `validators.xml` containing custom validators needs to contain a copy of 
 > the default validators. No DTD was used 
-> in `validators.xml`. See: 
[http://struts.apache.org/docs/release-notes-208.html#ReleaseNotes2.0.8-MigrationfrompreviousReleases](http://struts.apache.org/docs/release-notes-208.html#ReleaseNotes2.0.8-MigrationfrompreviousReleases)
+> in `validators.xml`. See: [Release Notes 
2.0.8](https://cwiki.apache.org/confluence/display/WW/Release+Notes+2.0.8#ReleaseNotes2.0.8-MigrationfrompreviousReleases)
 
 ## Turning on Validation
 
@@ -335,7 +335,7 @@ Non-Field-Validator: The `<validator>` element allows you 
to declare both types
 a field-specific FieldValidator).
 
 ```xml
-<validator type="expression> 
+<validator type="expression"> 
     <param name="expression">foo gt bar</param> 
     <message>foo must be great than bar.</message> 
 </validator> 
diff --git a/source/core-developers/visitor-validator.md 
b/source/core-developers/visitor-validator.md
index 18584cb..d30b089 100644
--- a/source/core-developers/visitor-validator.md
+++ b/source/core-developers/visitor-validator.md
@@ -1,13 +1,23 @@
 ---
 layout: core-developers
 title: visitor validator
+parent:
+    title: Validation
+    url: validation.html
 ---
 
 # visitor validator
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 ## Description
 
-The VisitorFieldValidator allows you to forward validation to object 
properties of your action using the object's own validation files. This allows 
you to use the `ModelDriven` development pattern and manage your validations 
for your models in one place, where they belong, next to your model classes. 
The VisitorFieldValidator can handle either simple Object properties, 
Collections of Objects, or Arrays.
+The VisitorFieldValidator allows you to forward validation to object 
properties of your action using the object's own 
+validation files. This allows you to use the `ModelDriven` development pattern 
and manage your validations for your models 
+in one place, where they belong, next to your model classes. The 
VisitorFieldValidator can handle either simple Object 
+properties, Collections of Objects, or Arrays.
 
 ## Parameters
 
@@ -17,7 +27,7 @@ The VisitorFieldValidator allows you to forward validation to 
object properties
 
 ## Examples
 
-```
+```xml
 <validators>
     <!-- Plain Validator Syntax -->
     <validator type="visitor">
diff --git a/source/core-developers/zero-configuration.md 
b/source/core-developers/zero-configuration.md
deleted file mode 100644
index 4ae710e..0000000
--- a/source/core-developers/zero-configuration.md
+++ /dev/null
@@ -1,99 +0,0 @@
----
-layout: core-developers
-title: Zero Configuration
----
-
-# Zero Configuration
-
-**(\!) Deprecated Plugin**
-
-
-> 
-
-> 
-
-> Since 2\.1 this plugin has been deprecated in favor of the _Convention 
Plugin_ 
-
-> 
-
-A "Zero Configuration" Struts application or plugin uses no additional XML or 
properties files\. Metadata is expressed through convention and annotation\.  
-
-As this is a new feature, and still being field\-tested, the documentation is 
sketchy\. But, here's what we have so far:
-
-## Finding Actions
-
-Set the "actionPackages" filter init param to a comma\-separated list of 
packages containing Action classes in web\.xml\. The packages and their 
subpackages will be scanned\. All classes in the designated packages that 
implement Action or end in "Action" are examined\.  The latter is to allow for 
POJO Actions that don't implement the Action interface\.
-
-**Annotation Initialization actionPackages Filter Parameter in web\.xml**
-
-
-```xml
-
-<filter>
-  <filter-name>struts2</filter-name>
-  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
-  <init-param>
-    <param-name>actionPackages</param-name>
-    <param-value>com.foo.bar,com.baz.quux</param-value>
-  </init-param>
-</filter>
-
-```
-
-We should probably add an action annotation, so that POJOs can itall with 
annotations\.
-
-## Examples
-
-The only example right now is in the showcase, where the person package uses 
the classpath scanning configuration\. 
-
-## Action and Package name
-
-The subpackage name makes the namespace, and the action class name makes the 
action name\.  If there is an "Action" suffix, it is dropped before creating 
the action name\. Therefore, if the configured package is _com\.myapp\.actions_ 
 and the Action is _com\.myapp\.actions\._ **member**\.EditAction, you can 
access it via 
[http://server/myapp/member/edit\.action](http://server/myapp/member/edit\.action)\.
  For multi\-word actions, the first letter is lower\-cased and the rest is 
left alon [...]
-
-## Results
-
-[Results](#PAGE_43811) are defined with the Result and Results annotations at 
the **class level**\. 
-
-## Namespaces
-
-The [Namespace Annotation](#PAGE_68488) overrides the namespace\.
-
-## Parent Package
-
-The [ParentPackage Annotation](#PAGE_68490) configures the XWork package (an 
XWork package is created per Java package) to extend one or more defined 
packages\. The best place for this annotation is on the package via the 
`package-info.java` file, however, for backward\-compatibility, they can be 
specified on one or more Actions in the package\.  To determine which parent 
packages should be set, first, it looks for the package annotation, then adds 
the action annotations as they are load [...]
-
-For example, if you wanted to set the parent package for the 
`com.mycompany.myapp.actions` package, create this package\-info\.java file:
-
-
-```java
-
-@ParentPackage("my-parent-package")
-package com.mycompany.myapp.actions
-
-import org.apache.struts2.config.ParentPackage;
-
-```
-
-To define multiple parent packages, list an array of package names:
-
-
-```java
-
-@ParentPackage({"my-parent-package1, my-parent-package2"})
-package com.mycompany.myapp.actions
-
-import org.apache.struts2.config.ParentPackage;
-
-```
-
-## Feedback
-
-Stay tuned to this page for additional details and documentation\. If you have 
a chance to  try the zero configuration feature, please share any experiences 
on dev@ and here\.
-
-## See also
-
-+ _Zero Configuration Scanning_  Use Case
-
-+ _Codebehind Plugin_ 
-
-+ _RESTfulActionMapper_ 

Reply via email to