Author: rich
Date: Thu Dec 16 01:38:39 2004
New Revision: 122537

URL: http://svn.apache.org/viewcvs?view=rev&rev=122537
Log:
Detailed tests for declarative validation through annotations on form fields, 
action methods, and in the @Jpf.Controller annotation of a page flow class.

DRT: netui (WinXP)
BB: self (WinXP)


Added:
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/declarativeValidation/
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/declarativeValidation/Controller.jpf
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/declarativeValidation/index.jsp
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/declarativeValidation/success.jsp
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughAction.xml
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughClass.xml
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughForm.xml
   (contents, props changed)
Modified:
   
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/declarativeValidation/Controller.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/declarativeValidation/Controller.jpf?view=auto&rev=122537
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/declarativeValidation/Controller.jpf
      Thu Dec 16 01:38:39 2004
@@ -0,0 +1,673 @@
+package validation.declarativeValidation;
+
+import org.apache.beehive.netui.pageflow.*;
+import org.apache.beehive.netui.pageflow.annotations.*;
+
+import java.io.Serializable;
+import java.util.*;
+
[EMAIL PROTECTED](
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp")
+    },
+    validatableBeans={
+        @Jpf.ValidatableBean(
+            type=Controller.UnvalidatedForm2.class,
+            validatableProperties={
+                @Jpf.ValidatableProperty(
+                    propertyName="validWhenPageFlowProp",
+                    displayName="This field",
+                    [EMAIL PROTECTED](),
+                    [EMAIL 
PROTECTED](condition="${pageFlow.str==actionForm.validWhenPageFlowProp}", 
message="pageFlow.str must be the same as this")
+                ),
+                @Jpf.ValidatableProperty(
+                    propertyName="minLength",
+                    displayName="This field",
+                    [EMAIL PROTECTED](),
+                    [EMAIL PROTECTED](chars=2)
+                ),
+                @Jpf.ValidatableProperty(
+                    propertyName="maxLength",
+                    displayName="This field",
+                    [EMAIL PROTECTED](),
+                    [EMAIL PROTECTED](chars=2)
+                ),
+                @Jpf.ValidatableProperty(
+                    propertyName="mask",
+                    displayName="This field",
+                    [EMAIL PROTECTED](),
+                    [EMAIL PROTECTED](regex="a*b")
+                ),
+                @Jpf.ValidatableProperty(
+                    propertyName="typeInt",
+                    displayName="This field",
+                    [EMAIL PROTECTED](),
+                    [EMAIL PROTECTED](type=int.class)
+                ),
+                @Jpf.ValidatableProperty(
+                    propertyName="typeFloat",
+                    displayName="This field",
+                    [EMAIL PROTECTED](),
+                    [EMAIL PROTECTED](type=float.class)
+                ),
+                @Jpf.ValidatableProperty(
+                    propertyName="typeShort",
+                    displayName="This field",
+                    [EMAIL PROTECTED](),
+                    [EMAIL PROTECTED](type=short.class)
+                ),
+                @Jpf.ValidatableProperty(
+                    propertyName="typeLong",
+                    displayName="This field",
+                    [EMAIL PROTECTED](),
+                    [EMAIL PROTECTED](type=long.class)
+                ),
+                @Jpf.ValidatableProperty(
+                    propertyName="typeDouble",
+                    displayName="This field",
+                    [EMAIL PROTECTED](),
+                    [EMAIL PROTECTED](type=double.class)
+                ),
+                @Jpf.ValidatableProperty(
+                    propertyName="typeByte",
+                    displayName="This field",
+                    [EMAIL PROTECTED](),
+                    [EMAIL PROTECTED](type=byte.class)
+                ),
+                @Jpf.ValidatableProperty(
+                    propertyName="date",
+                    displayName="This field",
+                    [EMAIL PROTECTED](),
+                    [EMAIL PROTECTED](pattern="M-d-y")
+                ),
+                @Jpf.ValidatableProperty(
+                    propertyName="range",
+                    displayName="This field",
+                    [EMAIL PROTECTED](),
+                    [EMAIL PROTECTED](minInt=1, maxInt=10)
+                ),
+                @Jpf.ValidatableProperty(
+                    propertyName="creditCard",
+                    displayName="This field",
+                    [EMAIL PROTECTED](),
+                    [EMAIL PROTECTED]()
+                ),
+                @Jpf.ValidatableProperty(
+                    propertyName="email",
+                    displayName="This field",
+                    [EMAIL PROTECTED](),
+                    [EMAIL PROTECTED]()
+                )
+            }
+        )
+    }
+)
+public class Controller extends PageFlowController
+{
+    private String _str;
+    private String _selectedAction = "formLevelValidate";
+
+    public void setStr( String str )
+    {
+        _str = str;
+    }
+
+    public String getStr()
+    {
+        return _str;
+    }
+
+    public Map< String, String > getActionChoices()
+    {
+        HashMap< String, String > ret = new HashMap< String, String >();
+        ret.put( "formLevelValidate", "form-level validation" );
+        ret.put( "actionLevelValidate", "action-level validation" );
+        ret.put( "classLevelValidate", "class-level validation" );
+        return ret;
+    }
+
+    public String getSelectedAction()
+    {
+        return _selectedAction;
+    }
+
+    public void setSelectedAction( String actionName )
+    {
+        _selectedAction = actionName;
+    }
+
+    @Jpf.Action(
+        forwards={
+            @Jpf.Forward(name="success", path="success.jsp")
+        },
+        [EMAIL PROTECTED](name="fail", navigateTo=Jpf.NavigateTo.currentPage)
+    )
+    public Forward formLevelValidate( ValidatedForm form )
+    {
+        return new Forward( "success" );
+    }
+
+    @Jpf.Action(
+        forwards={
+            @Jpf.Forward(name="success", path="success.jsp")
+        },
+        validatableProperties={
+            @Jpf.ValidatableProperty(
+                propertyName="validWhenPageFlowProp",
+                displayName="This field",
+                [EMAIL PROTECTED](),
+                [EMAIL 
PROTECTED](condition="${pageFlow.str==actionForm.validWhenPageFlowProp}", 
message="pageFlow.str must be the same as this")
+            ),
+            @Jpf.ValidatableProperty(
+                propertyName="minLength",
+                displayName="This field",
+                [EMAIL PROTECTED](),
+                [EMAIL PROTECTED](chars=2)
+            ),
+            @Jpf.ValidatableProperty(
+                propertyName="maxLength",
+                displayName="This field",
+                [EMAIL PROTECTED](),
+                [EMAIL PROTECTED](chars=2)
+            ),
+            @Jpf.ValidatableProperty(
+                propertyName="mask",
+                displayName="This field",
+                [EMAIL PROTECTED](),
+                [EMAIL PROTECTED](regex="a*b")
+            ),
+            @Jpf.ValidatableProperty(
+                propertyName="typeInt",
+                displayName="This field",
+                [EMAIL PROTECTED](),
+                [EMAIL PROTECTED](type=int.class)
+            ),
+            @Jpf.ValidatableProperty(
+                propertyName="typeFloat",
+                displayName="This field",
+                [EMAIL PROTECTED](),
+                [EMAIL PROTECTED](type=float.class)
+            ),
+            @Jpf.ValidatableProperty(
+                propertyName="typeShort",
+                displayName="This field",
+                [EMAIL PROTECTED](),
+                [EMAIL PROTECTED](type=short.class)
+            ),
+            @Jpf.ValidatableProperty(
+                propertyName="typeLong",
+                displayName="This field",
+                [EMAIL PROTECTED](),
+                [EMAIL PROTECTED](type=long.class)
+            ),
+            @Jpf.ValidatableProperty(
+                propertyName="typeDouble",
+                displayName="This field",
+                [EMAIL PROTECTED](),
+                [EMAIL PROTECTED](type=double.class)
+            ),
+            @Jpf.ValidatableProperty(
+                propertyName="typeByte",
+                displayName="This field",
+                [EMAIL PROTECTED](),
+                [EMAIL PROTECTED](type=byte.class)
+            ),
+            @Jpf.ValidatableProperty(
+                propertyName="date",
+                displayName="This field",
+                [EMAIL PROTECTED](),
+                [EMAIL PROTECTED](pattern="M-d-y")
+            ),
+            @Jpf.ValidatableProperty(
+                propertyName="range",
+                displayName="This field",
+                [EMAIL PROTECTED](),
+                [EMAIL PROTECTED](minInt=1, maxInt=10)
+            ),
+            @Jpf.ValidatableProperty(
+                propertyName="creditCard",
+                displayName="This field",
+                [EMAIL PROTECTED](),
+                [EMAIL PROTECTED]()
+            ),
+            @Jpf.ValidatableProperty(
+                propertyName="email",
+                displayName="This field",
+                [EMAIL PROTECTED](),
+                [EMAIL PROTECTED]()
+            )
+        },
+        [EMAIL PROTECTED](name="fail", navigateTo=Jpf.NavigateTo.currentPage)
+    )
+    public Forward actionLevelValidate( UnvalidatedForm form )
+    {
+        return new Forward( "success" );
+    }
+
+    @Jpf.Action(
+        forwards={
+            @Jpf.Forward(name="success", path="success.jsp")
+        },
+        [EMAIL PROTECTED](name="fail", navigateTo=Jpf.NavigateTo.currentPage)
+    )
+    public Forward classLevelValidate( UnvalidatedForm2 form )
+    {
+        return new Forward( "success" );
+    }
+
+    public static class UnvalidatedForm implements Serializable
+    {
+        private String _validWhenPageFlowProp;
+
+        public String getValidWhenPageFlowProp()
+        {
+            return _validWhenPageFlowProp;
+        }
+
+        public void setValidWhenPageFlowProp( String str )
+        {
+            _validWhenPageFlowProp = str;
+        }
+
+        private String _minLength;
+
+        public String getMinLength()
+        {
+            return _minLength;
+        }
+
+        public void setMinLength( String str )
+        {
+            _minLength = str;
+        }
+
+        private String _maxLength;
+
+        public String getMaxLength()
+        {
+            return _maxLength;
+        }
+
+        public void setMaxLength( String str )
+        {
+            _maxLength = str;
+        }
+
+        private String _mask;
+
+        public String getMask()
+        {
+            return _mask;
+        }
+
+        public void setMask( String str )
+        {
+            _mask = str;
+        }
+
+        private String _typeInt;
+
+        public String getTypeInt()
+        {
+            return _typeInt;
+        }
+
+        public void setTypeInt( String str )
+        {
+            _typeInt = str;
+        }
+
+        private String _typeFloat;
+
+        public String getTypeFloat()
+        {
+            return _typeFloat;
+        }
+
+        public void setTypeFloat( String str )
+        {
+            _typeFloat = str;
+        }
+
+        private String _typeShort;
+
+        public String getTypeShort()
+        {
+            return _typeShort;
+        }
+
+        public void setTypeShort( String str )
+        {
+            _typeShort = str;
+        }
+
+        private String _typeLong;
+
+        public String getTypeLong()
+        {
+            return _typeLong;
+        }
+
+        public void setTypeLong( String str )
+        {
+            _typeLong = str;
+        }
+
+        private String _typeDouble;
+
+        public String getTypeDouble()
+        {
+            return _typeDouble;
+        }
+
+        public void setTypeDouble( String str )
+        {
+            _typeDouble = str;
+        }
+
+        private String _typeByte;
+
+        public String getTypeByte()
+        {
+            return _typeByte;
+        }
+
+        public void setTypeByte( String str )
+        {
+            _typeByte = str;
+        }
+
+        private String _date;
+
+        public String getDate()
+        {
+            return _date;
+        }
+
+        public void setDate( String str )
+        {
+            _date = str;
+        }
+
+        private String _range;
+
+        public String getRange()
+        {
+            return _range;
+        }
+
+        public void setRange( String str )
+        {
+            _range = str;
+        }
+
+        private String _creditCard;
+
+        public String getCreditCard()
+        {
+            return _creditCard;
+        }
+
+        public void setCreditCard( String str )
+        {
+            _creditCard = str;
+        }
+
+        private String _email;
+
+        public String getEmail()
+        {
+            return _email;
+        }
+
+        public void setEmail( String str )
+        {
+            _email = str;
+        }
+    }
+    
+    public static class ValidatedForm implements Serializable
+    {
+        private String _validWhenPageFlowProp;
+
+        @Jpf.ValidatableProperty(
+            displayName="This field",
+            [EMAIL PROTECTED](),
+            [EMAIL 
PROTECTED](condition="${pageFlow.str==actionForm.validWhenPageFlowProp}", 
message="pageFlow.str must be the same as this")
+        )
+        public String getValidWhenPageFlowProp()
+        {
+            return _validWhenPageFlowProp;
+        }
+
+        public void setValidWhenPageFlowProp( String str )
+        {
+            _validWhenPageFlowProp = str;
+        }
+
+        private String _minLength;
+
+        @Jpf.ValidatableProperty(
+            displayName="This field",
+            [EMAIL PROTECTED](),
+            [EMAIL PROTECTED](chars=2)
+        )
+        public String getMinLength()
+        {
+            return _minLength;
+        }
+
+        public void setMinLength( String str )
+        {
+            _minLength = str;
+        }
+
+        private String _maxLength;
+
+        @Jpf.ValidatableProperty(
+            displayName="This field",
+            [EMAIL PROTECTED](),
+            [EMAIL PROTECTED](chars=2)
+        )
+        public String getMaxLength()
+        {
+            return _maxLength;
+        }
+
+        public void setMaxLength( String str )
+        {
+            _maxLength = str;
+        }
+
+        private String _mask;
+
+        @Jpf.ValidatableProperty(
+            displayName="This field",
+            [EMAIL PROTECTED](),
+            [EMAIL PROTECTED](regex="a*b")
+        )
+        public String getMask()
+        {
+            return _mask;
+        }
+
+        public void setMask( String str )
+        {
+            _mask = str;
+        }
+
+        private String _typeInt;
+
+        @Jpf.ValidatableProperty(
+            displayName="This field",
+            [EMAIL PROTECTED](),
+            [EMAIL PROTECTED](type=int.class)
+        )
+        public String getTypeInt()
+        {
+            return _typeInt;
+        }
+
+        public void setTypeInt( String str )
+        {
+            _typeInt = str;
+        }
+
+        private String _typeFloat;
+
+        @Jpf.ValidatableProperty(
+            displayName="This field",
+            [EMAIL PROTECTED](),
+            [EMAIL PROTECTED](type=float.class)
+        )
+        public String getTypeFloat()
+        {
+            return _typeFloat;
+        }
+
+        public void setTypeFloat( String str )
+        {
+            _typeFloat = str;
+        }
+
+        private String _typeShort;
+
+        @Jpf.ValidatableProperty(
+            displayName="This field",
+            [EMAIL PROTECTED](),
+            [EMAIL PROTECTED](type=short.class)
+        )
+        public String getTypeShort()
+        {
+            return _typeShort;
+        }
+
+        public void setTypeShort( String str )
+        {
+            _typeShort = str;
+        }
+
+        private String _typeLong;
+
+        @Jpf.ValidatableProperty(
+            displayName="This field",
+            [EMAIL PROTECTED](),
+            [EMAIL PROTECTED](type=long.class)
+        )
+        public String getTypeLong()
+        {
+            return _typeLong;
+        }
+
+        public void setTypeLong( String str )
+        {
+            _typeLong = str;
+        }
+
+        private String _typeDouble;
+
+        @Jpf.ValidatableProperty(
+            displayName="This field",
+            [EMAIL PROTECTED](),
+            [EMAIL PROTECTED](type=double.class)
+        )
+        public String getTypeDouble()
+        {
+            return _typeDouble;
+        }
+
+        public void setTypeDouble( String str )
+        {
+            _typeDouble = str;
+        }
+
+        private String _typeByte;
+
+        @Jpf.ValidatableProperty(
+            displayName="This field",
+            [EMAIL PROTECTED](),
+            [EMAIL PROTECTED](type=byte.class)
+        )
+        public String getTypeByte()
+        {
+            return _typeByte;
+        }
+
+        public void setTypeByte( String str )
+        {
+            _typeByte = str;
+        }
+
+        private String _date;
+
+        @Jpf.ValidatableProperty(
+            displayName="This field",
+            [EMAIL PROTECTED](),
+            [EMAIL PROTECTED](pattern="M-d-y")
+        )
+        public String getDate()
+        {
+            return _date;
+        }
+
+        public void setDate( String str )
+        {
+            _date = str;
+        }
+
+        private String _range;
+
+        @Jpf.ValidatableProperty(
+            displayName="This field",
+            [EMAIL PROTECTED](),
+            [EMAIL PROTECTED](minInt=1, maxInt=10)
+        )
+        public String getRange()
+        {
+            return _range;
+        }
+
+        public void setRange( String str )
+        {
+            _range = str;
+        }
+
+        private String _creditCard;
+
+        @Jpf.ValidatableProperty(
+            displayName="This field",
+            [EMAIL PROTECTED](),
+            [EMAIL PROTECTED]()
+        )
+        public String getCreditCard()
+        {
+            return _creditCard;
+        }
+
+        public void setCreditCard( String str )
+        {
+            _creditCard = str;
+        }
+
+        private String _email;
+
+        @Jpf.ValidatableProperty(
+            displayName="This field",
+            [EMAIL PROTECTED](),
+            [EMAIL PROTECTED]()
+        )
+        public String getEmail()
+        {
+            return _email;
+        }
+
+        public void setEmail( String str )
+        {
+            _email = str;
+        }
+    }
+
+    public static class UnvalidatedForm2 extends UnvalidatedForm
+    {
+    }
+}

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/declarativeValidation/index.jsp
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/declarativeValidation/index.jsp?view=auto&rev=122537
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/declarativeValidation/index.jsp
   Thu Dec 16 01:38:39 2004
@@ -0,0 +1,131 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib prefix="netui" uri="http://beehive.apache.org/netui/tags-html-1.0"%>
+<%@ taglib prefix="netui-data" 
uri="http://beehive.apache.org/netui/tags-databinding-1.0"%>
+<%@ taglib prefix="netui-template" 
uri="http://beehive.apache.org/netui/tags-template-1.0"%>
+
+
+<netui:html>
+    <head>
+        <netui:base/>
+    </head>
+    <netui:body>
+        <h3>Declarative Validation</h3>
+
+        <netui:form action="begin">
+            page flow 'str' property: <netui:textBox 
dataSource="pageFlow.str"/>
+            <netui:button value="submit"/>
+        </netui:form>
+        <hr/>
+        
+        Which type of validation?
+        <netui:form action="begin">
+            <netui:radioButtonGroup 
optionsDataSource="${pageFlow.actionChoices}" 
dataSource="pageFlow.selectedAction"/>
+            <netui:button value="submit"/>
+        </netui:form>
+        <hr/>
+
+        <netui:form action="${pageFlow.selectedAction}">
+            <table>
+                <tr>
+                    <td>minlength=2:</td>
+                    <td>
+                        <netui:textBox dataSource="actionForm.minLength"/>
+                        <netui:error value="minLength"/>
+                    </td>
+                </tr>
+                <tr>
+                    <td>maxlength=2:</td>
+                    <td>
+                        <netui:textBox dataSource="actionForm.maxLength"/>
+                        <netui:error value="maxLength"/>
+                    </td>
+                </tr>
+                <tr>
+                    <td>mask=a*b:</td>
+                    <td>
+                        <netui:textBox dataSource="actionForm.mask"/>
+                        <netui:error value="mask"/>
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=int:</td>
+                    <td>
+                        <netui:textBox dataSource="actionForm.typeInt"/>
+                        <netui:error value="typeInt"/>
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=short:</td>
+                    <td>
+                        <netui:textBox dataSource="actionForm.typeShort"/>
+                        <netui:error value="typeShort"/>
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=long:</td>
+                    <td>
+                        <netui:textBox dataSource="actionForm.typeLong"/>
+                        <netui:error value="typeLong"/>
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=double:</td>
+                    <td>
+                        <netui:textBox dataSource="actionForm.typeDouble"/>
+                        <netui:error value="typeDouble"/>
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=float:</td>
+                    <td>
+                        <netui:textBox dataSource="actionForm.typeFloat"/>
+                        <netui:error value="typeFloat"/>
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=byte:</td>
+                    <td>
+                        <netui:textBox dataSource="actionForm.typeByte"/>
+                        <netui:error value="typeByte"/>
+                    </td>
+                </tr>
+                <tr>
+                    <td>date=MM-dd-YYYY:</td>
+                    <td>
+                        <netui:textBox dataSource="actionForm.date"/>
+                        <netui:error value="date"/>
+                    </td>
+                </tr>
+                <tr>
+                    <td>range 1-10:</td>
+                    <td>
+                        <netui:textBox dataSource="actionForm.range"/>
+                        <netui:error value="range"/>
+                    </td>
+                </tr>
+                <tr>
+                    <td>credit card:</td>
+                    <td>
+                        <netui:textBox dataSource="actionForm.creditCard"/>
+                        <netui:error value="creditCard"/>
+                    </td>
+                </tr>
+                <tr>
+                    <td>email:</td>
+                    <td>
+                        <netui:textBox dataSource="actionForm.email"/>
+                        <netui:error value="email"/>
+                    </td>
+                </tr>
+                <tr>
+                    <td>valid when 
pageFlow.str==actionForm.validWhenPageFlowProp:</td>
+                    <td>
+                        <netui:textBox 
dataSource="actionForm.validWhenPageFlowProp"/>
+                        <netui:error value="validWhenPageFlowProp"/>
+                    </td>
+                </tr>
+            </table>
+            <netui:button value="${pageFlow.selectedAction}"/>
+        </netui:form>
+    </netui:body>
+</netui:html>

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/declarativeValidation/success.jsp
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/declarativeValidation/success.jsp?view=auto&rev=122537
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/declarativeValidation/success.jsp
 Thu Dec 16 01:38:39 2004
@@ -0,0 +1,19 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib prefix="netui" uri="http://beehive.apache.org/netui/tags-html-1.0"%>
+<%@ taglib prefix="netui-data" 
uri="http://beehive.apache.org/netui/tags-databinding-1.0"%>
+<%@ taglib prefix="netui-template" 
uri="http://beehive.apache.org/netui/tags-template-1.0"%>
+
+
+<netui:html>
+    <head>
+        <netui:base/>
+    </head>
+    <netui:body>
+        All validation passed.
+        <br/>
+        <netui:anchor action="begin">start over</netui:anchor>
+    </netui:body>
+</netui:html>
+
+  
+

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml?view=diff&rev=122537&p1=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r1=122536&p2=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r2=122537
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
   (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
   Thu Dec 16 01:38:39 2004
@@ -5254,6 +5254,46 @@
          </features>
       </test>
       <test>
+         <name>ValidateThroughAction</name>
+         <description>Test of declarative validation through annotations on 
action methods.</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>corePageFlow</category>
+         </categories>
+         <features>
+            <feature>Form</feature>
+            <feature>Validation</feature>
+         </features>
+      </test>
+      <test>
+         <name>ValidateThroughClass</name>
+         <description>Test of declarative validation through the 
@Jpf.Controller annotation.</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>corePageFlow</category>
+         </categories>
+         <features>
+            <feature>Form</feature>
+            <feature>Validation</feature>
+         </features>
+      </test>
+      <test>
+         <name>ValidateThroughForm</name>
+         <description>Test of declarative validation through form field 
annotations.</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>drt</category>
+            <category>corePageFlow</category>
+         </categories>
+         <features>
+            <feature>Form</feature>
+            <feature>Validation</feature>
+         </features>
+      </test>
+      <test>
          <name>Validation2</name>
          <description>Tests of basic validation and validation using the 
Struts ValidatorPlugIn (as well as netui:error, netui:errors).</description>
          <webapp>coreWeb</webapp>

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughAction.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughAction.xml?view=auto&rev=122537
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughAction.xml
 Thu Dec 16 01:38:39 2004
@@ -0,0 +1,1039 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession 
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session";>
+   <ses:sessionName>ValidateThroughAction</ses:sessionName>
+   <ses:tester>rich</ses:tester>
+   <ses:startDate>16 Dec 2004, 02:23:07.322 AM MST</ses:startDate>
+   <ses:description>Test of declarative validation in action 
annotations.</ses:description>
+   <ses:tests>
+      <ses:test>
+         <ses:testNumber>1</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/index.jsp";>
+    </head>
+    <body>
+        <h3>Declarative Validation</h3>
+
+        <form id="Netui_Form_0" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            page flow 'str' property: <input type="text" name="{pageFlow.str}">
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+        
+        Which type of validation?
+        <form id="Netui_Form_1" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            <input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="actionLevelValidate"><span>action-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="classLevelValidate"><span>class-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="formLevelValidate" checked><span>form-level validation</span><br>
+
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+
+        <form name="validatedForm" 
action="/coreWeb/validation/declarativeValidation/formLevelValidate.do" 
method="post">
+            <table>
+                <tr>
+                    <td>minlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.minLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>maxlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.maxLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>mask=a*b:</td>
+                    <td>
+                        <input type="text" name="{actionForm.mask}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=int:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeInt}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=short:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeShort}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=long:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeLong}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=double:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeDouble}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=float:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeFloat}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=byte:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeByte}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>date=MM-dd-YYYY:</td>
+                    <td>
+                        <input type="text" name="{actionForm.date}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>range 1-10:</td>
+                    <td>
+                        <input type="text" name="{actionForm.range}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>credit card:</td>
+                    <td>
+                        <input type="text" name="{actionForm.creditCard}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>email:</td>
+                    <td>
+                        <input type="text" name="{actionForm.email}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>valid when 
pageFlow.str==actionForm.validWhenPageFlowProp:</td>
+                    <td>
+                        <input type="text" 
name="{actionForm.validWhenPageFlowProp}">
+                        
+                    </td>
+                </tr>
+            </table>
+            <input type="submit" value="formLevelValidate">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>2</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/begin.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{pageFlow.str}</ses:name>
+                  <ses:value>aaa</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>22</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/validation/declarativeValidation/Controller.jpf</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/index.jsp";>
+    </head>
+    <body>
+        <h3>Declarative Validation</h3>
+
+        <form id="Netui_Form_0" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            page flow 'str' property: <input type="text" name="{pageFlow.str}" 
value="aaa">
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+        
+        Which type of validation?
+        <form id="Netui_Form_1" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            <input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="actionLevelValidate"><span>action-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="classLevelValidate"><span>class-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="formLevelValidate" checked><span>form-level validation</span><br>
+
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+
+        <form name="validatedForm" 
action="/coreWeb/validation/declarativeValidation/formLevelValidate.do" 
method="post">
+            <table>
+                <tr>
+                    <td>minlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.minLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>maxlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.maxLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>mask=a*b:</td>
+                    <td>
+                        <input type="text" name="{actionForm.mask}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=int:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeInt}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=short:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeShort}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=long:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeLong}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=double:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeDouble}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=float:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeFloat}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=byte:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeByte}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>date=MM-dd-YYYY:</td>
+                    <td>
+                        <input type="text" name="{actionForm.date}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>range 1-10:</td>
+                    <td>
+                        <input type="text" name="{actionForm.range}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>credit card:</td>
+                    <td>
+                        <input type="text" name="{actionForm.creditCard}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>email:</td>
+                    <td>
+                        <input type="text" name="{actionForm.email}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>valid when 
pageFlow.str==actionForm.validWhenPageFlowProp:</td>
+                    <td>
+                        <input type="text" 
name="{actionForm.validWhenPageFlowProp}">
+                        
+                    </td>
+                </tr>
+            </table>
+            <input type="submit" value="formLevelValidate">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>3</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/begin.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  
<ses:name>wlw-radio_button_group_key:{pageFlow.selectedAction}</ses:name>
+                  <ses:value>actionLevelValidate</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>78</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/validation/declarativeValidation/begin.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/index.jsp";>
+    </head>
+    <body>
+        <h3>Declarative Validation</h3>
+
+        <form id="Netui_Form_0" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            page flow 'str' property: <input type="text" name="{pageFlow.str}" 
value="aaa">
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+        
+        Which type of validation?
+        <form id="Netui_Form_1" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            <input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="actionLevelValidate" checked><span>action-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="classLevelValidate"><span>class-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="formLevelValidate"><span>form-level validation</span><br>
+
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+
+        <form name="unvalidatedForm" 
action="/coreWeb/validation/declarativeValidation/actionLevelValidate.do" 
method="post">
+            <table>
+                <tr>
+                    <td>minlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.minLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>maxlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.maxLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>mask=a*b:</td>
+                    <td>
+                        <input type="text" name="{actionForm.mask}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=int:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeInt}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=short:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeShort}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=long:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeLong}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=double:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeDouble}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=float:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeFloat}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=byte:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeByte}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>date=MM-dd-YYYY:</td>
+                    <td>
+                        <input type="text" name="{actionForm.date}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>range 1-10:</td>
+                    <td>
+                        <input type="text" name="{actionForm.range}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>credit card:</td>
+                    <td>
+                        <input type="text" name="{actionForm.creditCard}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>email:</td>
+                    <td>
+                        <input type="text" name="{actionForm.email}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>valid when 
pageFlow.str==actionForm.validWhenPageFlowProp:</td>
+                    <td>
+                        <input type="text" 
name="{actionForm.validWhenPageFlowProp}">
+                        
+                    </td>
+                </tr>
+            </table>
+            <input type="submit" value="actionLevelValidate">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>4</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/actionLevelValidate.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{actionForm.creditCard}</ses:name>
+                  <ses:value>4444444444444447</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.date}</ses:name>
+                  <ses:value>invalid</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.email}</ses:name>
+                  <ses:value>invalid</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.mask}</ses:name>
+                  <ses:value>aaa</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.maxLength}</ses:name>
+                  <ses:value>aaa</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.minLength}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.range}</ses:name>
+                  <ses:value>11</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeByte}</ses:name>
+                  <ses:value>128</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeDouble}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeFloat}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeInt}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeLong}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeShort}</ses:name>
+                  <ses:value>32768</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.validWhenPageFlowProp}</ses:name>
+                  <ses:value>aa</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>436</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/validation/declarativeValidation/begin.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/index.jsp";>
+    </head>
+    <body>
+        <h3>Declarative Validation</h3>
+
+        <form id="Netui_Form_0" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            page flow 'str' property: <input type="text" name="{pageFlow.str}" 
value="aaa">
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+        
+        Which type of validation?
+        <form id="Netui_Form_1" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            <input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="actionLevelValidate" checked><span>action-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="classLevelValidate"><span>class-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="formLevelValidate"><span>form-level validation</span><br>
+
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+
+        <form name="unvalidatedForm" 
action="/coreWeb/validation/declarativeValidation/actionLevelValidate.do" 
method="post">
+            <table>
+                <tr>
+                    <td>minlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.minLength}" 
value="a">
+                        This field cannot be less than 2 characters.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>maxlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.maxLength}" 
value="aaa">
+                        This field cannot be greater than 2 characters.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>mask=a*b:</td>
+                    <td>
+                        <input type="text" name="{actionForm.mask}" 
value="aaa">
+                        This field is invalid.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=int:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeInt}" 
value="a">
+                        This field must be an integer.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=short:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeShort}" 
value="32768">
+                        This field must be a short.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=long:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeLong}" 
value="a">
+                        This field must be a long.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=double:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeDouble}" 
value="a">
+                        This field must be a double.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=float:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeFloat}" 
value="a">
+                        This field must be a float.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=byte:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeByte}" 
value="128">
+                        This field must be a byte.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>date=MM-dd-YYYY:</td>
+                    <td>
+                        <input type="text" name="{actionForm.date}" 
value="invalid">
+                        This field is not a date.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>range 1-10:</td>
+                    <td>
+                        <input type="text" name="{actionForm.range}" 
value="11">
+                        This field is not in the range 1 through 10.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>credit card:</td>
+                    <td>
+                        <input type="text" name="{actionForm.creditCard}" 
value="4444444444444447">
+                        This field is an invalid credit card number.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>email:</td>
+                    <td>
+                        <input type="text" name="{actionForm.email}" 
value="invalid">
+                        This field is an invalid e-mail address.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>valid when 
pageFlow.str==actionForm.validWhenPageFlowProp:</td>
+                    <td>
+                        <input type="text" 
name="{actionForm.validWhenPageFlowProp}" value="aa">
+                        pageFlow.str must be the same as this
+
+                    </td>
+                </tr>
+            </table>
+            <input type="submit" value="actionLevelValidate">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>5</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/actionLevelValidate.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{actionForm.creditCard}</ses:name>
+                  <ses:value>4444444444444448</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.date}</ses:name>
+                  <ses:value>10-10-1973</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.email}</ses:name>
+                  <ses:value>[EMAIL PROTECTED]</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.mask}</ses:name>
+                  <ses:value>aaab</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.maxLength}</ses:name>
+                  <ses:value>aa</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.minLength}</ses:name>
+                  <ses:value>aa</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.range}</ses:name>
+                  <ses:value>9</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeByte}</ses:name>
+                  <ses:value>127</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeDouble}</ses:name>
+                  <ses:value>2.0</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeFloat}</ses:name>
+                  <ses:value>2.0</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeInt}</ses:name>
+                  <ses:value>10</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeLong}</ses:name>
+                  <ses:value>10</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeShort}</ses:name>
+                  <ses:value>32767</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.validWhenPageFlowProp}</ses:name>
+                  <ses:value>aaa</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>454</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/validation/declarativeValidation/actionLevelValidate.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/success.jsp";>
+    </head>
+    <body>
+        All validation passed.
+        <br/>
+        <a href="/coreWeb/validation/declarativeValidation/begin.do">start 
over</a>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>16 Dec 2004, 02:24:27.788 AM MST</ses:endDate>
+   <ses:testCount>5</ses:testCount>
+</ses:recorderSession>

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughClass.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughClass.xml?view=auto&rev=122537
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughClass.xml
  Thu Dec 16 01:38:39 2004
@@ -0,0 +1,1314 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession 
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session";>
+   <ses:sessionName>ValidateThroughClass</ses:sessionName>
+   <ses:tester>rich</ses:tester>
+   <ses:startDate>16 Dec 2004, 02:25:02.888 AM MST</ses:startDate>
+   <ses:description>Test of declarative validation in the @Jpf.Controller 
annotation.</ses:description>
+   <ses:tests>
+      <ses:test>
+         <ses:testNumber>1</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/index.jsp";>
+    </head>
+    <body>
+        <h3>Declarative Validation</h3>
+
+        <form id="Netui_Form_0" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            page flow 'str' property: <input type="text" name="{pageFlow.str}">
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+        
+        Which type of validation?
+        <form id="Netui_Form_1" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            <input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="actionLevelValidate"><span>action-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="classLevelValidate"><span>class-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="formLevelValidate" checked><span>form-level validation</span><br>
+
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+
+        <form name="validatedForm" 
action="/coreWeb/validation/declarativeValidation/formLevelValidate.do" 
method="post">
+            <table>
+                <tr>
+                    <td>minlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.minLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>maxlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.maxLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>mask=a*b:</td>
+                    <td>
+                        <input type="text" name="{actionForm.mask}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=int:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeInt}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=short:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeShort}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=long:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeLong}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=double:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeDouble}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=float:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeFloat}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=byte:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeByte}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>date=MM-dd-YYYY:</td>
+                    <td>
+                        <input type="text" name="{actionForm.date}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>range 1-10:</td>
+                    <td>
+                        <input type="text" name="{actionForm.range}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>credit card:</td>
+                    <td>
+                        <input type="text" name="{actionForm.creditCard}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>email:</td>
+                    <td>
+                        <input type="text" name="{actionForm.email}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>valid when 
pageFlow.str==actionForm.validWhenPageFlowProp:</td>
+                    <td>
+                        <input type="text" 
name="{actionForm.validWhenPageFlowProp}">
+                        
+                    </td>
+                </tr>
+            </table>
+            <input type="submit" value="formLevelValidate">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>2</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/begin.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{pageFlow.str}</ses:name>
+                  <ses:value>aaa</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>22</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/validation/declarativeValidation/Controller.jpf</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/index.jsp";>
+    </head>
+    <body>
+        <h3>Declarative Validation</h3>
+
+        <form id="Netui_Form_0" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            page flow 'str' property: <input type="text" name="{pageFlow.str}" 
value="aaa">
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+        
+        Which type of validation?
+        <form id="Netui_Form_1" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            <input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="actionLevelValidate"><span>action-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="classLevelValidate"><span>class-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="formLevelValidate" checked><span>form-level validation</span><br>
+
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+
+        <form name="validatedForm" 
action="/coreWeb/validation/declarativeValidation/formLevelValidate.do" 
method="post">
+            <table>
+                <tr>
+                    <td>minlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.minLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>maxlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.maxLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>mask=a*b:</td>
+                    <td>
+                        <input type="text" name="{actionForm.mask}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=int:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeInt}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=short:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeShort}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=long:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeLong}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=double:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeDouble}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=float:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeFloat}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=byte:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeByte}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>date=MM-dd-YYYY:</td>
+                    <td>
+                        <input type="text" name="{actionForm.date}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>range 1-10:</td>
+                    <td>
+                        <input type="text" name="{actionForm.range}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>credit card:</td>
+                    <td>
+                        <input type="text" name="{actionForm.creditCard}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>email:</td>
+                    <td>
+                        <input type="text" name="{actionForm.email}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>valid when 
pageFlow.str==actionForm.validWhenPageFlowProp:</td>
+                    <td>
+                        <input type="text" 
name="{actionForm.validWhenPageFlowProp}">
+                        
+                    </td>
+                </tr>
+            </table>
+            <input type="submit" value="formLevelValidate">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>3</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/begin.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  
<ses:name>wlw-radio_button_group_key:{pageFlow.selectedAction}</ses:name>
+                  <ses:value>classLevelValidate</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>77</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/validation/declarativeValidation/begin.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/index.jsp";>
+    </head>
+    <body>
+        <h3>Declarative Validation</h3>
+
+        <form id="Netui_Form_0" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            page flow 'str' property: <input type="text" name="{pageFlow.str}" 
value="aaa">
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+        
+        Which type of validation?
+        <form id="Netui_Form_1" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            <input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="actionLevelValidate"><span>action-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="classLevelValidate" checked><span>class-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="formLevelValidate"><span>form-level validation</span><br>
+
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+
+        <form name="unvalidatedForm2" 
action="/coreWeb/validation/declarativeValidation/classLevelValidate.do" 
method="post">
+            <table>
+                <tr>
+                    <td>minlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.minLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>maxlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.maxLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>mask=a*b:</td>
+                    <td>
+                        <input type="text" name="{actionForm.mask}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=int:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeInt}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=short:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeShort}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=long:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeLong}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=double:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeDouble}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=float:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeFloat}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=byte:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeByte}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>date=MM-dd-YYYY:</td>
+                    <td>
+                        <input type="text" name="{actionForm.date}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>range 1-10:</td>
+                    <td>
+                        <input type="text" name="{actionForm.range}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>credit card:</td>
+                    <td>
+                        <input type="text" name="{actionForm.creditCard}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>email:</td>
+                    <td>
+                        <input type="text" name="{actionForm.email}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>valid when 
pageFlow.str==actionForm.validWhenPageFlowProp:</td>
+                    <td>
+                        <input type="text" 
name="{actionForm.validWhenPageFlowProp}">
+                        
+                    </td>
+                </tr>
+            </table>
+            <input type="submit" value="classLevelValidate">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>4</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/classLevelValidate.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{actionForm.creditCard}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.date}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.email}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.mask}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.maxLength}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.minLength}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.range}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeByte}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeDouble}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeFloat}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeInt}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeLong}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeShort}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.validWhenPageFlowProp}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>383</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/validation/declarativeValidation/begin.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/index.jsp";>
+    </head>
+    <body>
+        <h3>Declarative Validation</h3>
+
+        <form id="Netui_Form_0" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            page flow 'str' property: <input type="text" name="{pageFlow.str}" 
value="aaa">
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+        
+        Which type of validation?
+        <form id="Netui_Form_1" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            <input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="actionLevelValidate"><span>action-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="classLevelValidate" checked><span>class-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="formLevelValidate"><span>form-level validation</span><br>
+
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+
+        <form name="unvalidatedForm2" 
action="/coreWeb/validation/declarativeValidation/classLevelValidate.do" 
method="post">
+            <table>
+                <tr>
+                    <td>minlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.minLength}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>maxlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.maxLength}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>mask=a*b:</td>
+                    <td>
+                        <input type="text" name="{actionForm.mask}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=int:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeInt}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=short:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeShort}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=long:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeLong}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=double:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeDouble}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=float:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeFloat}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=byte:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeByte}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>date=MM-dd-YYYY:</td>
+                    <td>
+                        <input type="text" name="{actionForm.date}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>range 1-10:</td>
+                    <td>
+                        <input type="text" name="{actionForm.range}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>credit card:</td>
+                    <td>
+                        <input type="text" name="{actionForm.creditCard}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>email:</td>
+                    <td>
+                        <input type="text" name="{actionForm.email}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>valid when 
pageFlow.str==actionForm.validWhenPageFlowProp:</td>
+                    <td>
+                        <input type="text" 
name="{actionForm.validWhenPageFlowProp}">
+                        This field is required.
+
+                    </td>
+                </tr>
+            </table>
+            <input type="submit" value="classLevelValidate">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>5</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/classLevelValidate.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{actionForm.creditCard}</ses:name>
+                  <ses:value>4444444444444447</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.date}</ses:name>
+                  <ses:value>invalid</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.email}</ses:name>
+                  <ses:value>invalid</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.mask}</ses:name>
+                  <ses:value>aaa</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.maxLength}</ses:name>
+                  <ses:value>aaa</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.minLength}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.range}</ses:name>
+                  <ses:value>11</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeByte}</ses:name>
+                  <ses:value>128</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeDouble}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeFloat}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeInt}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeLong}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeShort}</ses:name>
+                  <ses:value>32768</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.validWhenPageFlowProp}</ses:name>
+                  <ses:value>aa</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>436</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/validation/declarativeValidation/classLevelValidate.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/index.jsp";>
+    </head>
+    <body>
+        <h3>Declarative Validation</h3>
+
+        <form id="Netui_Form_0" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            page flow 'str' property: <input type="text" name="{pageFlow.str}" 
value="aaa">
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+        
+        Which type of validation?
+        <form id="Netui_Form_1" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            <input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="actionLevelValidate"><span>action-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="classLevelValidate" checked><span>class-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="formLevelValidate"><span>form-level validation</span><br>
+
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+
+        <form name="unvalidatedForm2" 
action="/coreWeb/validation/declarativeValidation/classLevelValidate.do" 
method="post">
+            <table>
+                <tr>
+                    <td>minlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.minLength}" 
value="a">
+                        This field cannot be less than 2 characters.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>maxlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.maxLength}" 
value="aaa">
+                        This field cannot be greater than 2 characters.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>mask=a*b:</td>
+                    <td>
+                        <input type="text" name="{actionForm.mask}" 
value="aaa">
+                        This field is invalid.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=int:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeInt}" 
value="a">
+                        This field must be an integer.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=short:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeShort}" 
value="32768">
+                        This field must be a short.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=long:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeLong}" 
value="a">
+                        This field must be a long.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=double:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeDouble}" 
value="a">
+                        This field must be a double.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=float:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeFloat}" 
value="a">
+                        This field must be a float.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=byte:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeByte}" 
value="128">
+                        This field must be a byte.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>date=MM-dd-YYYY:</td>
+                    <td>
+                        <input type="text" name="{actionForm.date}" 
value="invalid">
+                        This field is not a date.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>range 1-10:</td>
+                    <td>
+                        <input type="text" name="{actionForm.range}" 
value="11">
+                        This field is not in the range 1 through 10.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>credit card:</td>
+                    <td>
+                        <input type="text" name="{actionForm.creditCard}" 
value="4444444444444447">
+                        This field is an invalid credit card number.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>email:</td>
+                    <td>
+                        <input type="text" name="{actionForm.email}" 
value="invalid">
+                        This field is an invalid e-mail address.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>valid when 
pageFlow.str==actionForm.validWhenPageFlowProp:</td>
+                    <td>
+                        <input type="text" 
name="{actionForm.validWhenPageFlowProp}" value="aa">
+                        pageFlow.str must be the same as this
+
+                    </td>
+                </tr>
+            </table>
+            <input type="submit" value="classLevelValidate">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>6</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/classLevelValidate.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{actionForm.creditCard}</ses:name>
+                  <ses:value>4444444444444448</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.date}</ses:name>
+                  <ses:value>10-10-1973</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.email}</ses:name>
+                  <ses:value>[EMAIL PROTECTED]</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.mask}</ses:name>
+                  <ses:value>aaab</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.maxLength}</ses:name>
+                  <ses:value>aa</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.minLength}</ses:name>
+                  <ses:value>aa</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.range}</ses:name>
+                  <ses:value>9</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeByte}</ses:name>
+                  <ses:value>127</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeDouble}</ses:name>
+                  <ses:value>2.0</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeFloat}</ses:name>
+                  <ses:value>2.0</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeInt}</ses:name>
+                  <ses:value>10</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeLong}</ses:name>
+                  <ses:value>10</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeShort}</ses:name>
+                  <ses:value>32767</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.validWhenPageFlowProp}</ses:name>
+                  <ses:value>aaa</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>454</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/validation/declarativeValidation/classLevelValidate.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/success.jsp";>
+    </head>
+    <body>
+        All validation passed.
+        <br/>
+        <a href="/coreWeb/validation/declarativeValidation/begin.do">start 
over</a>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>16 Dec 2004, 02:28:20.933 AM MST</ses:endDate>
+   <ses:testCount>6</ses:testCount>
+</ses:recorderSession>

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughForm.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughForm.xml?view=auto&rev=122537
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughForm.xml
   Thu Dec 16 01:38:39 2004
@@ -0,0 +1,1105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession 
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session";>
+   <ses:sessionName>ValidateThroughForm</ses:sessionName>
+   <ses:tester>rich</ses:tester>
+   <ses:startDate>16 Dec 2004, 02:19:50.249 AM MST</ses:startDate>
+   <ses:description>Test of declarative validation on form 
fields.</ses:description>
+   <ses:tests>
+      <ses:test>
+         <ses:testNumber>1</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/index.jsp";>
+    </head>
+    <body>
+        <h3>Declarative Validation</h3>
+
+        <form id="Netui_Form_0" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            page flow 'str' property: <input type="text" name="{pageFlow.str}">
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+        
+        Which type of validation?
+        <form id="Netui_Form_1" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            <input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="actionLevelValidate"><span>action-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="classLevelValidate"><span>class-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="formLevelValidate" checked><span>form-level validation</span><br>
+
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+
+        <form name="validatedForm" 
action="/coreWeb/validation/declarativeValidation/formLevelValidate.do" 
method="post">
+            <table>
+                <tr>
+                    <td>minlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.minLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>maxlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.maxLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>mask=a*b:</td>
+                    <td>
+                        <input type="text" name="{actionForm.mask}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=int:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeInt}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=short:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeShort}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=long:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeLong}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=double:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeDouble}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=float:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeFloat}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=byte:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeByte}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>date=MM-dd-YYYY:</td>
+                    <td>
+                        <input type="text" name="{actionForm.date}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>range 1-10:</td>
+                    <td>
+                        <input type="text" name="{actionForm.range}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>credit card:</td>
+                    <td>
+                        <input type="text" name="{actionForm.creditCard}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>email:</td>
+                    <td>
+                        <input type="text" name="{actionForm.email}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>valid when 
pageFlow.str==actionForm.validWhenPageFlowProp:</td>
+                    <td>
+                        <input type="text" 
name="{actionForm.validWhenPageFlowProp}">
+                        
+                    </td>
+                </tr>
+            </table>
+            <input type="submit" value="formLevelValidate">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>2</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/begin.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{pageFlow.str}</ses:name>
+                  <ses:value>aaa</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>22</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/validation/declarativeValidation/Controller.jpf</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/index.jsp";>
+    </head>
+    <body>
+        <h3>Declarative Validation</h3>
+
+        <form id="Netui_Form_0" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            page flow 'str' property: <input type="text" name="{pageFlow.str}" 
value="aaa">
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+        
+        Which type of validation?
+        <form id="Netui_Form_1" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            <input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="actionLevelValidate"><span>action-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="classLevelValidate"><span>class-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="formLevelValidate" checked><span>form-level validation</span><br>
+
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+
+        <form name="validatedForm" 
action="/coreWeb/validation/declarativeValidation/formLevelValidate.do" 
method="post">
+            <table>
+                <tr>
+                    <td>minlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.minLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>maxlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.maxLength}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>mask=a*b:</td>
+                    <td>
+                        <input type="text" name="{actionForm.mask}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=int:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeInt}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=short:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeShort}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=long:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeLong}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=double:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeDouble}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=float:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeFloat}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=byte:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeByte}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>date=MM-dd-YYYY:</td>
+                    <td>
+                        <input type="text" name="{actionForm.date}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>range 1-10:</td>
+                    <td>
+                        <input type="text" name="{actionForm.range}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>credit card:</td>
+                    <td>
+                        <input type="text" name="{actionForm.creditCard}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>email:</td>
+                    <td>
+                        <input type="text" name="{actionForm.email}">
+                        
+                    </td>
+                </tr>
+                <tr>
+                    <td>valid when 
pageFlow.str==actionForm.validWhenPageFlowProp:</td>
+                    <td>
+                        <input type="text" 
name="{actionForm.validWhenPageFlowProp}">
+                        
+                    </td>
+                </tr>
+            </table>
+            <input type="submit" value="formLevelValidate">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>3</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/formLevelValidate.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{actionForm.creditCard}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.date}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.email}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.mask}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.maxLength}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.minLength}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.range}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeByte}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeDouble}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeFloat}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeInt}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeLong}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeShort}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.validWhenPageFlowProp}</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>383</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/validation/declarativeValidation/begin.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/index.jsp";>
+    </head>
+    <body>
+        <h3>Declarative Validation</h3>
+
+        <form id="Netui_Form_0" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            page flow 'str' property: <input type="text" name="{pageFlow.str}" 
value="aaa">
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+        
+        Which type of validation?
+        <form id="Netui_Form_1" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            <input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="actionLevelValidate"><span>action-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="classLevelValidate"><span>class-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="formLevelValidate" checked><span>form-level validation</span><br>
+
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+
+        <form name="validatedForm" 
action="/coreWeb/validation/declarativeValidation/formLevelValidate.do" 
method="post">
+            <table>
+                <tr>
+                    <td>minlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.minLength}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>maxlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.maxLength}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>mask=a*b:</td>
+                    <td>
+                        <input type="text" name="{actionForm.mask}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=int:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeInt}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=short:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeShort}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=long:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeLong}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=double:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeDouble}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=float:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeFloat}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=byte:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeByte}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>date=MM-dd-YYYY:</td>
+                    <td>
+                        <input type="text" name="{actionForm.date}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>range 1-10:</td>
+                    <td>
+                        <input type="text" name="{actionForm.range}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>credit card:</td>
+                    <td>
+                        <input type="text" name="{actionForm.creditCard}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>email:</td>
+                    <td>
+                        <input type="text" name="{actionForm.email}">
+                        This field is required.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>valid when 
pageFlow.str==actionForm.validWhenPageFlowProp:</td>
+                    <td>
+                        <input type="text" 
name="{actionForm.validWhenPageFlowProp}">
+                        This field is required.
+
+                    </td>
+                </tr>
+            </table>
+            <input type="submit" value="formLevelValidate">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>4</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/formLevelValidate.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{actionForm.creditCard}</ses:name>
+                  <ses:value>4444444444444447</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.date}</ses:name>
+                  <ses:value>invalid</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.email}</ses:name>
+                  <ses:value>invalid</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.mask}</ses:name>
+                  <ses:value>aaa</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.maxLength}</ses:name>
+                  <ses:value>aaa</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.minLength}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.range}</ses:name>
+                  <ses:value>11</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeByte}</ses:name>
+                  <ses:value>128</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeDouble}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeFloat}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeInt}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeLong}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeShort}</ses:name>
+                  <ses:value>32768</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.validWhenPageFlowProp}</ses:name>
+                  <ses:value>aa</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>436</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/validation/declarativeValidation/formLevelValidate.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/index.jsp";>
+    </head>
+    <body>
+        <h3>Declarative Validation</h3>
+
+        <form id="Netui_Form_0" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            page flow 'str' property: <input type="text" name="{pageFlow.str}" 
value="aaa">
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+        
+        Which type of validation?
+        <form id="Netui_Form_1" 
action="/coreWeb/validation/declarativeValidation/begin.do" method="post">
+            <input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="actionLevelValidate"><span>action-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="classLevelValidate"><span>class-level validation</span><br>
+<input type="radio" 
name="wlw-radio_button_group_key:{pageFlow.selectedAction}" 
value="formLevelValidate" checked><span>form-level validation</span><br>
+
+            <input type="submit" value="submit">
+        </form>
+        <hr/>
+
+        <form name="validatedForm" 
action="/coreWeb/validation/declarativeValidation/formLevelValidate.do" 
method="post">
+            <table>
+                <tr>
+                    <td>minlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.minLength}" 
value="a">
+                        This field cannot be less than 2 characters.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>maxlength=2:</td>
+                    <td>
+                        <input type="text" name="{actionForm.maxLength}" 
value="aaa">
+                        This field cannot be greater than 2 characters.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>mask=a*b:</td>
+                    <td>
+                        <input type="text" name="{actionForm.mask}" 
value="aaa">
+                        This field is invalid.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=int:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeInt}" 
value="a">
+                        This field must be an integer.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=short:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeShort}" 
value="32768">
+                        This field must be a short.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=long:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeLong}" 
value="a">
+                        This field must be a long.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=double:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeDouble}" 
value="a">
+                        This field must be a double.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=float:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeFloat}" 
value="a">
+                        This field must be a float.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>type=byte:</td>
+                    <td>
+                        <input type="text" name="{actionForm.typeByte}" 
value="128">
+                        This field must be a byte.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>date=MM-dd-YYYY:</td>
+                    <td>
+                        <input type="text" name="{actionForm.date}" 
value="invalid">
+                        This field is not a date.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>range 1-10:</td>
+                    <td>
+                        <input type="text" name="{actionForm.range}" 
value="11">
+                        This field is not in the range 1 through 10.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>credit card:</td>
+                    <td>
+                        <input type="text" name="{actionForm.creditCard}" 
value="4444444444444447">
+                        This field is an invalid credit card number.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>email:</td>
+                    <td>
+                        <input type="text" name="{actionForm.email}" 
value="invalid">
+                        This field is an invalid e-mail address.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>valid when 
pageFlow.str==actionForm.validWhenPageFlowProp:</td>
+                    <td>
+                        <input type="text" 
name="{actionForm.validWhenPageFlowProp}" value="aa">
+                        pageFlow.str must be the same as this
+
+                    </td>
+                </tr>
+            </table>
+            <input type="submit" value="formLevelValidate">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>5</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/validation/declarativeValidation/formLevelValidate.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{actionForm.creditCard}</ses:name>
+                  <ses:value>4444444444444448</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.date}</ses:name>
+                  <ses:value>10-10-1973</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.email}</ses:name>
+                  <ses:value>[EMAIL PROTECTED]</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.mask}</ses:name>
+                  <ses:value>aaab</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.maxLength}</ses:name>
+                  <ses:value>aa</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.minLength}</ses:name>
+                  <ses:value>aa</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.range}</ses:name>
+                  <ses:value>9</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeByte}</ses:name>
+                  <ses:value>127</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeDouble}</ses:name>
+                  <ses:value>2.0</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeFloat}</ses:name>
+                  <ses:value>2.0</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeInt}</ses:name>
+                  <ses:value>10</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeLong}</ses:name>
+                  <ses:value>10</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.typeShort}</ses:name>
+                  <ses:value>32767</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>{actionForm.validWhenPageFlowProp}</ses:name>
+                  <ses:value>aaa</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>454</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=DAC13B34DC00E6AD67C96F02AC6820E7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/validation/declarativeValidation/formLevelValidate.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/validation/declarativeValidation/success.jsp";>
+    </head>
+    <body>
+        All validation passed.
+        <br/>
+        <a href="/coreWeb/validation/declarativeValidation/begin.do">start 
over</a>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>16 Dec 2004, 02:22:36.648 AM MST</ses:endDate>
+   <ses:testCount>5</ses:testCount>
+</ses:recorderSession>

Reply via email to