You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by do...@apache.org on 2004/07/30 04:55:00 UTC

svn commit: rev 30961 - in incubator/beehive/trunk/netui: src/tags-html/org/apache/beehive/netui/tags/html src/util/org/apache/beehive/netui/util test/webapps/drt/coreWeb/coretags test/webapps/drt/coreWeb/coretags/fileupload test/webapps/drt/coreWeb/coretags/fileupload/nullbinding test/webapps/drt/coreWeb/coretags/form test/webapps/drt/coreWeb/coretags/form/bean test/webapps/drt/coreWeb/coretags/form/beanerror test/webapps/drt/coreWeb/coretags/form/errors test/webapps/drt/coreWeb/coretags/form/nullbinding test/webapps/drt/testRecorder/config test/webapps/drt/testRecorder/tests

Author: dolander
Date: Thu Jul 29 19:54:58 2004
New Revision: 30961

Added:
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/fileupload/
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/fileupload/nullbinding/
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/fileupload/nullbinding/Controller.jpf
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/fileupload/nullbinding/index.jsp
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/bean/
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/bean/Controller.jpf
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/bean/index.jsp
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/beanerror/
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/beanerror/Controller.jpf
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/beanerror/index.jsp
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/errors/
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/errors/Controller.jpf
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/errors/index.jsp
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/nullbinding/
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/nullbinding/Controller.jpf
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/nullbinding/index.jsp
   incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtFileUploadNullBinding.xml
   incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtFormBean.xml
   incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtFormBeanError.xml
   incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtFormErrors.xml
   incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtFormNullBinding.xml
Modified:
   incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FileUpload.java
   incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java
   incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/netui.properties
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/index.jsp
   incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
Log:
Add support for JSP 2.0 EL default value handling on the FileUpload and Form tags.
Add BVT for null binding tests on FileUpload and Form
Add BVT for Initialization beans on Form tags.




Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FileUpload.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FileUpload.java	(original)
+++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FileUpload.java	Thu Jul 29 19:54:58 2004
@@ -277,6 +277,12 @@
             idScript = addTagIdMapping(tagId, realName);
         }
 
+        if (hasErrors()) {
+            reportErrors();
+            localRelease();
+            return EVAL_PAGE;
+        }
+
         StringBuilder results = new StringBuilder(32);
         TagRenderingBase br = TagRenderingBase.Factory.getRendering(TagRenderingBase.INPUT_FILE_TAG, req);
         br.doStartTag(results, _state);

Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java	(original)
+++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java	Thu Jul 29 19:54:58 2004
@@ -243,6 +243,7 @@
     private InputHiddenTag.State _hiddenState = new InputHiddenTag.State();
 
     private String _focus = null;                  // The name of the field to receive focus, if any.
+    private boolean _reportedError = false;
     // @todo: did we support location in 8.1?  How?
     private String _location = null;               // The location hash to append to the url.
     private String _scope = null;                  // The scope (request or session) under which our associated bean is stored
@@ -323,8 +324,9 @@
      * @netui.tldx:attribute reftype="netui-action-url"
      */
     public void setAction(String action)
+        throws JspException
     {
-        _state.action = action;
+        _state.action = setRequiredValueAttribute(action,"action");;
     }
 
     /**
@@ -375,7 +377,7 @@
      */
     public void setFocus(String focus)
     {
-        _focus = focus;
+        _focus = setNonEmptyValueAttribute(focus);
     }
 
     /**
@@ -410,8 +412,14 @@
      * @netui.tldx:attribute category="misc"
      */
     public void setMethod(String method)
+        throws JspException
     {
-        _state.method = method;
+        if (FORM_POST.equals(method) || FORM_GET.equals(method)) {
+            _state.method = method;
+            return;
+        }
+        String s = Bundle.getString("Tags_ButtonTypeError", new Object[]{method});
+        registerTagError(s, null);
     }
 
     /**
@@ -429,8 +437,10 @@
      * @netui.tldx:attribute category="misc"
      */
     public void setName(String name)
+        throws JspException
     {
-        _state.name = name;
+        // @todo: we need to verify what happens if this is null and type is set.
+        _state.name =  setRequiredValueAttribute(name,"name");
     }
 
     /**
@@ -448,8 +458,7 @@
      */
     public void setOnReset(String onReset)
     {
-        AbstractHtmlState tsh = getState();
-        tsh.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, ONRESET, onReset);
+        _state.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, ONRESET, onReset);
     }
 
     /**
@@ -467,8 +476,7 @@
      */
     public void setOnSubmit(String onSubmit)
     {
-        AbstractHtmlState tsh = getState();
-        tsh.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, ONSUBMIT, onSubmit);
+        _state.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, ONSUBMIT, onSubmit);
     }
 
     /**
@@ -489,8 +497,9 @@
      * @netui.tldx:attribute category="misc"
      */
     public void setScope(String scope)
+        throws JspException
     {
-        _scope = scope;
+        _scope = setRequiredValueAttribute(scope,"scope");
     }
 
     /**
@@ -526,8 +535,9 @@
      * @netui.tldx:attribute category="misc"
      */
     public void setType(String type)
+        throws JspException
     {
-        _type = type;
+         _type = setRequiredValueAttribute(type,"type");
     }
 
     /**
@@ -602,7 +612,16 @@
      */
     public int doStartTag() throws JspException
     {
-        //Error out if there is a parent form
+        // report all errors in the attributes.  If the values are in error then we will
+        // not process the form content.
+        if (hasErrors()) {
+            reportErrors();
+            _reportedError=true;
+            return SKIP_BODY;
+        }
+
+        // Error out if there is a parent form
+        // @todo: should this just be a design time test?
         if (getNearestForm() != null) {
             registerTagError(Bundle.getString("Tags_FormParentForm"), null);
         }
@@ -611,7 +630,8 @@
         lookup();
         if (hasErrors()) {
             reportErrors();
-            return EVAL_PAGE;
+            _reportedError=true;
+            return SKIP_BODY;
         }
 
         // Create an appropriate "form" element based on our parameters
@@ -663,7 +683,8 @@
 
             if (hasErrors()) {
                 reportErrors();
-                return EVAL_PAGE;
+                _reportedError=true;
+                return SKIP_BODY;
             }
 
             if (bean instanceof ActionForm) {
@@ -677,8 +698,7 @@
             }
         }
         if (bean != null) {
-            pageContext.setAttribute(Constants.BEAN_KEY, bean,
-                    PageContext.REQUEST_SCOPE);
+            pageContext.setAttribute(Constants.BEAN_KEY, bean,PageContext.REQUEST_SCOPE);
             pageContext.setAttribute("actionForm", bean);
         }
 
@@ -708,6 +728,10 @@
      */
     public int doEndTag() throws JspException
     {
+        if (_reportedError) {
+            localRelease();
+            return EVAL_PAGE;
+        }
         String idScript = null;
 
         // Create an appropriate "form" element based on our parameters
@@ -739,8 +763,7 @@
         // it's not legal to include them in the action URI on a GET.
         int query = actionUrl.indexOf('?');
         Map extraHiddenParams = null;
-        if (query != -1
-                && _state.method != null && _state.method.equalsIgnoreCase(FORM_GET)
+        if (query != -1 && _state.method != null && _state.method.equalsIgnoreCase(FORM_GET)
                 && !URLRewriterService.allowParamsOnFormAction(pageContext.getServletContext(), request)) {
             extraHiddenParams = new LinkedHashMap();
             StringTokenizer tok = new StringTokenizer(actionUrl.substring(query + 1), "&");
@@ -765,16 +788,16 @@
         br.doStartTag(results, _state);
 
         // for the form, lets output the contents of the body and the end tag and exit if there are errors
-        if (hasErrors()) {
-            reportErrors();
-            if (_text != null)
-                results.append(_text);
-            br.doEndTag(results);
-            write(results.toString());
-
-            localRelease();
-            return EVAL_PAGE;
-        }
+        //if (hasErrors()) {
+        //    reportErrors();
+        //    if (_text != null)
+        //        results.append(_text);
+        //    br.doEndTag(results);
+        //    write(results.toString());
+
+        //    localRelease();
+        //    return EVAL_PAGE;
+        //}
 
         // Add a transaction token (if present in our session)
         HttpSession session = pageContext.getSession();
@@ -908,6 +931,7 @@
         _focusMap = null;
         if (_idList != null)
             _idList.clear();
+        _reportedError = false;
         _appConfig = null;
         _setRealName = false;
         _params = null;
@@ -918,7 +942,8 @@
      * <code>type</code> properties if necessary.
      * @throws JspException if a required value cannot be looked up
      */
-    private void lookup() throws JspException
+    private void lookup()
+        throws JspException
     {
         ServletContext servletContext = pageContext.getServletContext();
         HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
@@ -935,6 +960,7 @@
         }
         _servlet = (ActionServlet) servletContext.getAttribute(Globals.ACTION_SERVLET_KEY);
 
+        // check to see if this is a bad action
         boolean isAction = PageflowTagUtils.isAction(request, response, servletContext, _state.action);
         if (!isAction) {
             registerTagError(Bundle.getString("Tags_BadAction", _state.action), null);
@@ -944,7 +970,6 @@
         //
         // If the current module is "/-global" (Global.app), then we'll first try the module
         // associated with the current pageflow.  Later we'll try "/-global".
-        //
         if (_appConfig.getPrefix().equals(PageFlowConstants.GLOBALAPP_MODULE_CONTEXT_PATH)) {
             PageFlowController curPgr = PageFlowUtils.getCurrentPageFlow(request);
 

Modified: incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/netui.properties
==============================================================================
--- incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/netui.properties	(original)
+++ incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/netui.properties	Thu Jul 29 19:54:58 2004
@@ -72,6 +72,7 @@
 
 Tags_ButtonText=Click
 Tags_ButtonTypeError=The type of a button must be one of 'submit', 'button' or 'reset', found ''{0}''.
+Tags_FormMethodError=The value of a method must be one of 'post' or 'get', found ''{0}''.
 
 Tags_CaptionTableParent=A TableCaption must have a Table as parent.
 Tags_RowTableParent=A TableRow must have a Table or TableBody as parent.

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/fileupload/nullbinding/Controller.jpf
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/fileupload/nullbinding/Controller.jpf	Thu Jul 29 19:54:58 2004
@@ -0,0 +1,60 @@
+package coretags.fileupload.nullbinding;
+
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+/**
+ * This is the default controller for a blank web application.
+ */
+@Jpf.Controller
+@Jpf.ViewProperties(
+    value = { 
+        "<!-- This data is auto-generated. Hand-editing this section is not recommended. -->", 
+        "<view-properties>", 
+        "<pageflow-object id='pageflow:/coretags/fileupload/nullbinding/Controller.jpf'/>", 
+        "<pageflow-object id='action:begin.do'>", 
+        "  <property value='80' name='x'/>", 
+        "  <property value='100' name='y'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='page:index.jsp'>", 
+        "  <property value='220' name='x'/>", 
+        "  <property value='100' name='y'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='forward:path#index#index.jsp#@action:begin.do@'>", 
+        "  <property value='116,140,140,164' name='elbowsX'/>", 
+        "  <property value='92,92,92,92' name='elbowsY'/>", 
+        "  <property value='East_1' name='fromPort'/>", 
+        "  <property value='West_1' name='toPort'/>", 
+        "  <property value='index' name='label'/>", 
+        "</pageflow-object>", 
+        "</view-properties>"
+    }
+)
+public class Controller extends PageFlowController
+{
+    private String _nullValue = null;
+    private Object[] _files = new Object[10];
+    
+    public String getNullValue() {
+        return _nullValue;
+    }
+    
+    public Object[] getFile() {
+        return _files;
+    }
+    public void setFile(Object[] b) {
+        _files = b;
+    }
+    
+    @Jpf.Action(
+        forwards={
+           @Jpf.Forward(name="index", path="index.jsp")
+        }
+    )
+    protected Forward begin()
+    {
+        return new Forward("index");
+    }
+    
+}
\ No newline at end of file

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/fileupload/nullbinding/index.jsp
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/fileupload/nullbinding/index.jsp	Thu Jul 29 19:54:58 2004
@@ -0,0 +1,32 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0" prefix="netui-data"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="netui-template"%>
+
+
+<netui:html>
+    <head>
+        <netui:base/>
+    </head>
+    <netui:body>
+    <h4>FileUpload Null Binding</h4>
+    <p style="color:green">Test of null binding to the attributes of the fileUpload.  All of these should be
+    ignored except for the tagId which will report an error.
+    <br>
+    This is a single page test.  
+    </p>
+    <hr>
+    <ul>
+    <li><netui:fileUpload dataSource="pageFlow.file[0]" accept="${pageFlow.nullValue}"/> -- accept</li>
+    <li><netui:fileUpload dataSource="pageFlow.file[1]" size="${pageFlow.nullValue}"/> -- size</li>
+    <li><netui:fileUpload dataSource="pageFlow.file[2]" title="${pageFlow.nullValue}"/> -- title</li>
+    </ul>
+    <hr>
+    <ul>
+    <li><netui:fileUpload dataSource="pageFlow.file[3]" tagId="${pageFlow.nullValue}"/> -- tagId</li>
+    </ul>
+    
+    </netui:body>
+</netui:html>
+
+  
\ No newline at end of file

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/bean/Controller.jpf
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/bean/Controller.jpf	Thu Jul 29 19:54:58 2004
@@ -0,0 +1,76 @@
+package coretags.form.bean;
+
+import javax.servlet.http.HttpSession;
+import org.apache.beehive.netui.pageflow.FormData;
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+/**
+ * This is the default controller for a blank web application.
+ */
+@Jpf.Controller
+@Jpf.ViewProperties(
+    value = { 
+        "<!-- This data is auto-generated. Hand-editing this section is not recommended. -->", 
+        "<view-properties>", 
+        "<pageflow-object id='pageflow:/coretags/form/bean/Controller.jpf'/>", 
+        "<pageflow-object id='action:begin.do'>", 
+        "  <property value='80' name='x'/>", 
+        "  <property value='100' name='y'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='page:index.jsp'>", 
+        "  <property value='220' name='x'/>", 
+        "  <property value='100' name='y'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='forward:path#index#index.jsp#@action:begin.do@'>", 
+        "  <property value='116,140,140,164' name='elbowsX'/>", 
+        "  <property value='92,92,92,92' name='elbowsY'/>", 
+        "  <property value='East_1' name='fromPort'/>", 
+        "  <property value='West_1' name='toPort'/>", 
+        "  <property value='index' name='label'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='action:${pageFlow.nullValue}.do'>", 
+        "  <property value='340' name='x'/>", 
+        "  <property value='100' name='y'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='action-call:@page:index.jsp@#@action:begin.do@'>", 
+        "  <property value='184,150,150,116' name='elbowsX'/>", 
+        "  <property value='92,92,92,92' name='elbowsY'/>", 
+        "  <property value='West_1' name='fromPort'/>", 
+        "  <property value='East_1' name='toPort'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='formbean:FormBean'/>", 
+        "</view-properties>"
+    }
+)
+public class Controller extends PageFlowController
+{
+    private String _nullValue = null;
+
+    public String getNullValue() {
+        return _nullValue;
+    }
+
+    @Jpf.Action(
+        forwards={
+           @Jpf.Forward(name="index", path="index.jsp")
+        }
+    )
+    protected Forward begin()
+    {
+        return new Forward("index");
+    }
+    
+    public static class FormBean extends FormData
+    {
+        private String type = "Default Type Value";
+
+        public String getType()
+        { return this.type; }
+
+        public void setType(String type)
+        { this.type = type; }
+    }
+    
+}
\ No newline at end of file

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/bean/index.jsp
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/bean/index.jsp	Thu Jul 29 19:54:58 2004
@@ -0,0 +1,31 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0" prefix="netui-data"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="netui-template"%>
+
+
+<netui:html>
+    <head>
+        <netui:base/>
+    </head>
+    <netui:body>
+    <h4>Explicit Form Bean</h4>
+    <p style="color:green">This test will create a bean that is used to load the form
+    values.  Three attributes are used to cause a bean to be created and then used to populate
+    the form.  The <b>name</b> attribute names the bean in the attribute map.  The <b>type</b>
+    specifies the type of the bean.  The <b>scope</b> defines the scope to look for the bean.  This
+    is either session or request.
+    <br>
+    This is a single page test.  
+    </p>
+    <hr>
+    <netui:form action="begin" name="ctFormBean" type="coretags.form.bean.Controller$FormBean" scope="session">
+        <p>
+            Type: <netui:textBox dataSource="actionForm.type" /><br>
+            <netui:button type="submit" value="Submit"></netui:button>
+        </p>
+    </netui:form>
+    </netui:body>
+</netui:html>
+
+  
\ No newline at end of file

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/beanerror/Controller.jpf
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/beanerror/Controller.jpf	Thu Jul 29 19:54:58 2004
@@ -0,0 +1,76 @@
+package coretags.form.beanerror;
+
+import javax.servlet.http.HttpSession;
+import org.apache.beehive.netui.pageflow.FormData;
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+/**
+ * This is the default controller for a blank web application.
+ */
+@Jpf.Controller
+@Jpf.ViewProperties(
+    value = { 
+        "<!-- This data is auto-generated. Hand-editing this section is not recommended. -->", 
+        "<view-properties>", 
+        "<pageflow-object id='pageflow:/coretags/form/bean/Controller.jpf'/>", 
+        "<pageflow-object id='action:begin.do'>", 
+        "  <property value='80' name='x'/>", 
+        "  <property value='100' name='y'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='page:index.jsp'>", 
+        "  <property value='220' name='x'/>", 
+        "  <property value='100' name='y'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='forward:path#index#index.jsp#@action:begin.do@'>", 
+        "  <property value='116,140,140,164' name='elbowsX'/>", 
+        "  <property value='92,92,92,92' name='elbowsY'/>", 
+        "  <property value='East_1' name='fromPort'/>", 
+        "  <property value='West_1' name='toPort'/>", 
+        "  <property value='index' name='label'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='action:${pageFlow.nullValue}.do'>", 
+        "  <property value='340' name='x'/>", 
+        "  <property value='100' name='y'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='action-call:@page:index.jsp@#@action:begin.do@'>", 
+        "  <property value='184,150,150,116' name='elbowsX'/>", 
+        "  <property value='92,92,92,92' name='elbowsY'/>", 
+        "  <property value='West_1' name='fromPort'/>", 
+        "  <property value='East_1' name='toPort'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='formbean:FormBean'/>", 
+        "</view-properties>"
+    }
+)
+public class Controller extends PageFlowController
+{
+    private String _nullValue = null;
+
+    public String getNullValue() {
+        return _nullValue;
+    }
+
+    @Jpf.Action(
+        forwards={
+           @Jpf.Forward(name="index", path="index.jsp")
+        }
+    )
+    protected Forward begin()
+    {
+        return new Forward("index");
+    }
+    
+    public static class FormBean extends FormData
+    {
+        private String type = "Default Type Value";
+
+        public String getType()
+        { return this.type; }
+
+        public void setType(String type)
+        { this.type = type; }
+    }
+    
+}
\ No newline at end of file

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/beanerror/index.jsp
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/beanerror/index.jsp	Thu Jul 29 19:54:58 2004
@@ -0,0 +1,44 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0" prefix="netui-data"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="netui-template"%>
+
+
+<netui:html>
+    <head>
+        <netui:base/>
+    </head>
+    <netui:body>
+    <h4>Explicit Form Bean Errors</h4>
+    <p style="color:green">This verifies errors that are produced when the name, type, and scope attributes
+    are not used correctly.  In the first, no type is specified.  In the second and third a bad type
+    is specified.
+    <br>
+    This is a single page test.  
+    </p>
+    <%%>
+    <hr>
+    <p>No Type Specified:
+    <netui:form action="begin" name="ctFormBeanError2" scope="session" style="display:inline">
+            Type: <netui:textBox dataSource="actionForm.type" />&nbsp;<netui:button type="submit" value="Submit"></netui:button>
+    </netui:form>
+    </p>
+    <p>Bad Type:
+    <netui:form action="begin" name="ctFormBeanError1" type="coretags.form.bean.Controller$BadType" scope="session" style="display:inline">
+            Type: <netui:textBox dataSource="actionForm.type" />&nbsp;<netui:button type="submit" value="Submit"></netui:button>
+    </netui:form>
+    </p>
+    <p>Non-form Type Specified:
+    <netui:form action="begin" name="ctFormBeanError3" type="java.lang.String" scope="session" style="display:inline">
+            Type: <netui:textBox dataSource="actionForm.type" />&nbsp;<netui:button type="submit" value="Submit"></netui:button>
+    </netui:form>
+    <p>No Name Specified:
+    <netui:form action="begin" type="coretags.form.beanerror.Controller$FormBean" scope="session" style="display:inline">
+            Type: <netui:textBox dataSource="actionForm.type" />&nbsp;<netui:button type="submit" value="Submit"></netui:button>
+    </netui:form>
+    </p>
+    </p>
+    </netui:body>
+</netui:html>
+
+  
\ No newline at end of file

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/errors/Controller.jpf
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/errors/Controller.jpf	Thu Jul 29 19:54:58 2004
@@ -0,0 +1,84 @@
+package coretags.form.errors;
+
+import org.apache.beehive.netui.pageflow.FormData;
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+/**
+ * This is the default controller for a blank web application.
+ */
+@Jpf.Controller
+@Jpf.ViewProperties(
+    value = { 
+        "<!-- This data is auto-generated. Hand-editing this section is not recommended. -->", 
+        "<view-properties>", 
+        "<pageflow-object id='pageflow:/coretags/form/errors/Controller.jpf'/>", 
+        "<pageflow-object id='action:begin.do'>", 
+        "  <property value='80' name='x'/>", 
+        "  <property value='100' name='y'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='page:index.jsp'>", 
+        "  <property value='220' name='x'/>", 
+        "  <property value='100' name='y'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='forward:path#index#index.jsp#@action:begin.do@'>", 
+        "  <property value='116,140,140,164' name='elbowsX'/>", 
+        "  <property value='92,92,92,92' name='elbowsY'/>", 
+        "  <property value='East_1' name='fromPort'/>", 
+        "  <property value='West_1' name='toPort'/>", 
+        "  <property value='index' name='label'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='action:${pageFlow.nullValue}.do'>", 
+        "  <property value='340' name='x'/>", 
+        "  <property value='100' name='y'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='action-call:@page:index.jsp@#@action:begin.do@'>", 
+        "  <property value='184,150,150,116' name='elbowsX'/>", 
+        "  <property value='92,92,92,92' name='elbowsY'/>", 
+        "  <property value='West_1' name='fromPort'/>", 
+        "  <property value='East_1' name='toPort'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='action:badAction.do'>", 
+        "  <property value='360' name='x'/>", 
+        "  <property value='180' name='y'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='action-call:@page:index.jsp@#@action:badAction.do@'>", 
+        "  <property value='256,290,290,324' name='elbowsX'/>", 
+        "  <property value='92,92,172,172' name='elbowsY'/>", 
+        "  <property value='East_1' name='fromPort'/>", 
+        "  <property value='West_1' name='toPort'/>", 
+        "</pageflow-object>", 
+        "</view-properties>"
+    }
+)
+public class Controller extends PageFlowController
+{
+    private String _nullValue = null;
+
+    public String getNullValue() {
+        return _nullValue;
+    }
+
+    @Jpf.Action(
+        forwards={
+           @Jpf.Forward(name="index", path="index.jsp")
+        }
+    )
+    protected Forward begin()
+    {
+        return new Forward("index");
+    }
+
+    public static class FormBean extends FormData
+    {
+        private String type;
+
+        public String getType()
+        { return this.type; }
+
+        public void setType(String type)
+        { this.type = type; }
+    }
+    
+}
\ No newline at end of file

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/errors/index.jsp
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/errors/index.jsp	Thu Jul 29 19:54:58 2004
@@ -0,0 +1,31 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0" prefix="netui-data"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="netui-template"%>
+
+
+<netui:html>
+    <head>
+        <netui:base/>
+    </head>
+    <netui:body>
+    <h4>Form Errors</h4>
+    <p style="color:green">This verifies the basic errors raised by the form tag.  
+    </p>
+    <ul style="color:green">
+    <li>Nested Forms -- Forms may not be nested</li>
+    <li>Bad Action -- Form has an invalid action</li>
+    </ul>
+    <p style="color:green">This verifies the basic errors raised by the form tag.  
+    This is a single page test.  
+    </p>
+    <hr>
+    <ul>
+    <li><netui:form action="begin" style="display:inline"><netui:form action="begin" style="display:inline">
+        </netui:form></netui:form><span> -- form inside a form</span></li>
+    <li><netui:form action="badAction" style="display:inline"></netui:form><span> -- bad action</span></li>
+    </ul>    
+    </netui:body>
+</netui:html>
+
+  
\ No newline at end of file

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/nullbinding/Controller.jpf
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/nullbinding/Controller.jpf	Thu Jul 29 19:54:58 2004
@@ -0,0 +1,81 @@
+package coretags.form.nullbinding;
+
+import org.apache.beehive.netui.pageflow.FormData;
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+/**
+ * This is the default controller for a blank web application.
+ */
+@Jpf.Controller
+@Jpf.ViewProperties(
+    value = { 
+        "<!-- This data is auto-generated. Hand-editing this section is not recommended. -->", 
+        "<view-properties>", 
+        "<pageflow-object id='pageflow:/coretags/form/nullbinding/Controller.jpf'/>", 
+        "<pageflow-object id='action:begin.do'>", 
+        "  <property value='80' name='x'/>", 
+        "  <property value='100' name='y'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='page:index.jsp'>", 
+        "  <property value='220' name='x'/>", 
+        "  <property value='100' name='y'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='forward:path#index#index.jsp#@action:begin.do@'>", 
+        "  <property value='116,140,140,164' name='elbowsX'/>", 
+        "  <property value='92,92,92,92' name='elbowsY'/>", 
+        "  <property value='East_1' name='fromPort'/>", 
+        "  <property value='West_1' name='toPort'/>", 
+        "  <property value='index' name='label'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='action-call:@page:index.jsp@#@action:begin.do@'>", 
+        "  <property value='184,150,150,116' name='elbowsX'/>", 
+        "  <property value='92,92,92,92' name='elbowsY'/>", 
+        "  <property value='West_1' name='fromPort'/>", 
+        "  <property value='East_1' name='toPort'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='action:${pageFlow.nullValue}.do'>", 
+        "  <property value='340' name='x'/>", 
+        "  <property value='100' name='y'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='action-call:@page:index.jsp@#@action:${pageFlow.nullValue}.do@'>", 
+        "  <property value='256,280,280,304' name='elbowsX'/>", 
+        "  <property value='92,92,92,92' name='elbowsY'/>", 
+        "  <property value='East_1' name='fromPort'/>", 
+        "  <property value='West_1' name='toPort'/>", 
+        "</pageflow-object>", 
+        "<pageflow-object id='formbean:FormBean'/>", 
+        "</view-properties>"
+    }
+)
+public class Controller extends PageFlowController
+{
+    private String _nullValue = null;
+
+    public String getNullValue() {
+        return _nullValue;
+    }
+
+    @Jpf.Action(
+        forwards={
+           @Jpf.Forward(name="index", path="index.jsp")
+        }
+    )
+    protected Forward begin()
+    {
+        return new Forward("index");
+    }
+
+    public static class FormBean extends FormData
+    {
+        private String type;
+
+        public String getType()
+        { return this.type; }
+
+        public void setType(String type)
+        { this.type = type; }
+    }
+    
+}
\ No newline at end of file

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/nullbinding/index.jsp
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/form/nullbinding/index.jsp	Thu Jul 29 19:54:58 2004
@@ -0,0 +1,40 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0" prefix="netui-data"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="netui-template"%>
+
+
+<netui:html>
+    <head>
+        <netui:base/>
+    </head>
+    <netui:body>
+    <h4>Form Null Binding</h4>
+    <p style="color:green">Test bind null value to the attributes of a form.  Below are two set of tests against form.
+    In the first, we are binding to the attributes who's values are ignored and no attribute is output.  In the second
+    a value is required so an error is generated.
+    <br>
+    This is a single page test.  
+    </p>
+    <hr>
+    <ul>
+    <li><netui:form action="begin" style="display:inline" focus="${pageFlow.nullValue}"></netui:form><span> -- focus</span></li>
+    <li><netui:form action="begin" style="display:inline" target="${pageFlow.nullValue}"></netui:form><span> -- target</span></li>
+    <li><netui:form action="begin" style="display:inline" enctype="${pageFlow.nullValue}" ></netui:form><span> -- enctype</span></li>
+    <li><netui:form action="begin" style="display:inline" location="${pageFlow.nullValue}" ></netui:form><span> -- location</span></li>
+    <li><netui:form action="begin" style="display:inline" title="${pageFlow.nullValue}" ></netui:form><span> -- title</span></li>
+    </ul>
+    <hr>
+    <ul>
+    <li><netui:form action="begin" style="display:inline" method="${pageFlow.nullValue}" ></netui:form><span> -- method</span></li>
+    <li><netui:form action="begin" style="display:inline" scope="${pageFlow.nullValue}" ></netui:form><span> -- scope</span></li>
+    <li><netui:form action="${pageFlow.nullValue}" style="display:inline"></netui:form><span> -- action</span></li>
+    <li><netui:form action="begin" style="display:inline" tagId="${pageFlow.nullValue}"></netui:form><span> -- tagId</span></li>
+    <li><netui:form action="begin" style="display:inline" type="${pageFlow.nullValue}" ></netui:form><span> -- type</span></li>
+    <li><netui:form action="begin" style="display:inline" name="${pageFlow.nullValue}" type="coretags.form.nullbinding.Controller.$FormBean"></netui:form><span> -- name</span></li>
+    </ul>
+    
+    </netui:body>
+</netui:html>
+
+  
\ No newline at end of file

Modified: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/index.jsp
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/index.jsp	(original)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/coretags/index.jsp	Thu Jul 29 19:54:58 2004
@@ -6,12 +6,17 @@
     <body>
     <h4>Index of Core Tests</h4>
     <ul>
-    <li><a href="anchor\nullbinding\Controller.jpf">Anchor Null Binding</a> &#8212; Anchor null binding tests</li>
-    <li><a href="anchor\nullbindingerror\Controller.jpf">Anchor Error Null Binding</a> &#8212; Anchor null binding tests with errors</li>
-    <li><a href="base\nullbinding\Controller.jpf">Base Null Binding</a> &#8212; Base null binding tests</li>
-    <li><a href="button\nullbinding\Controller.jpf">Button Null Binding</a> &#8212; Button null binding tests</li>
-    <li><a href="checkbox\nullbinding\Controller.jpf">Checkbox Null Binding</a> &#8212; Checkbox null binding tests</li>
-    <li><a href="htmlbase\nullbinding\Controller.jpf">HtmlBase Null Binding</a> &#8212; HtmlBase attributes null binding tests</li>
+    <li><a href="anchor/nullbinding/Controller.jpf">Anchor Null Binding</a> &#8212; Anchor null binding tests</li>
+    <li><a href="anchor/nullbindingerror/Controller.jpf">Anchor Error Null Binding</a> &#8212; Anchor null binding tests with errors</li>
+    <li><a href="base/nullbinding/Controller.jpf">Base Null Binding</a> &#8212; Base null binding tests</li>
+    <li><a href="button/nullbinding/Controller.jpf">Button Null Binding</a> &#8212; Button null binding tests</li>
+    <li><a href="checkbox/nullbinding/Controller.jpf">Checkbox Null Binding</a> &#8212; Checkbox null binding tests</li>
+    <li><a href="fileupload/nullbinding/Controller.jpf">FileUpload Null Binding</a> &#8212; FileUpload null binding tests</li>
+    <li><a href="form/bean/Controller.jpf">Form Bean</a> &#8212; Test of the Form name, type and scope attributes</li>
+    <li><a href="form/beanerror/Controller.jpf">Form Bean Error</a> &#8212; Test of Errors in the Form name, type and scope attributes</li>
+    <li><a href="form/errors/Controller.jpf">Form Errors</a> &#8212; Form Errors</li>
+    <li><a href="form/nullbinding/Controller.jpf">Form Null Binding</a> &#8212; FileUpload null binding tests</li>
+    <li><a href="htmlbase/nullbinding/Controller.jpf">HtmlBase Null Binding</a> &#8212; HtmlBase attributes null binding tests</li>
     </ul>
     </body>
 </html>

Modified: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
==============================================================================
--- 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 Jul 29 19:54:58 2004
@@ -1693,6 +1693,70 @@
          </features>
       </test>
       <test>
+         <name>CtFileUploadNullBinding</name>
+         <description>Binding to null in the FileUpload tags attributes</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>tags</category>
+         </categories>
+         <features>
+            <feature>FileUpload</feature>
+            <feature>Binding</feature>
+         </features>
+      </test>
+      <test>
+         <name>CtFormBean</name>
+         <description>Use of the Form name, type and scope attributes to create an initialization bean</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>tags</category>
+         </categories>
+         <features>
+            <feature>Form</feature>
+         </features>
+      </test>
+      <test>
+         <name>CtFormBeanError</name>
+         <description>Errors using the Form name, type and scope attributes</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>tags</category>
+         </categories>
+         <features>
+            <feature>Form</feature>
+         </features>
+      </test>
+      <test>
+         <name>CtFormErrors</name>
+         <description>Errors produced by the Form tag</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>tags</category>
+         </categories>
+         <features>
+            <feature>Form</feature>
+            <feature>Errors</feature>
+         </features>
+      </test>
+      <test>
+         <name>CtFormNullBinding</name>
+         <description>Binding to null in the Form attributes</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>tags</category>
+         </categories>
+         <features>
+            <feature>Form</feature>
+            <feature>Binding</feature>
+         </features>
+      </test>
+
+      <test>
          <name>CtHtmlBaseNullBinding</name>
          <description>Binding to null in the HtmlBaseTag attributes</description>
          <webapp>coreWeb</webapp>

Added: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtFileUploadNullBinding.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtFileUploadNullBinding.xml	Thu Jul 29 19:54:58 2004
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+   <ses:sessionName>CtFileUploadNullBinding</ses:sessionName>
+   <ses:tester>Daryl</ses:tester>
+   <ses:startDate>29 Jul 2004, 08:08:33.532 PM MDT</ses:startDate>
+   <ses:description>Null attribute binding in the fileUpload tag.</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/coretags/fileupload/nullbinding/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>5015CA38936AC32068FA718764324E54</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*</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</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=5015CA38936AC32068FA718764324E54</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)</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/coretags/fileupload/nullbinding/index.jsp">
+    </head>
+    <body>
+    <h4>FileUpload Null Binding</h4>
+    <p style="color:green">Test of null binding to the attributes of the fileUpload.  All of these should be
+    ignored except for the tagId which will report an error.
+    <br>
+    This is a single page test.  
+    </p>
+    <hr>
+    <ul>
+    <li><input type="file" name="{pageFlow.file[0]}"> -- accept</li>
+    <li><input type="file" name="{pageFlow.file[1]}"> -- size</li>
+    <li><input type="file" name="{pageFlow.file[2]}"> -- title</li>
+    </ul>
+    <hr>
+    <ul>
+    <li><span style="color:red;background-color:white">
+ [<b>Tag Error:1</b>, Found in tag <b>FileUpload</b>]</span> -- tagId</li>
+    </ul>
+    
+    <div> <hr /><table border="1" cellspacing="0" style="color:red;background-color:white">
+ <tr><th colspan="6">Page Errors</th></tr>
+ <tr><th>Error Number</th><th>Tag Type</th><th colspan="4">Error</th></tr>
+<tr><th>1</th><th>FileUpload</th><th>Message</th><td>Attribute 'tagId' is required to have a value.  The value "" is illegal.  This is often cause by binding to an object with a null value.</td></tr>
+</table></div>
+</body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>29 Jul 2004, 08:08:43.667 PM MDT</ses:endDate>
+   <ses:testCount>1</ses:testCount>
+</ses:recorderSession>

Added: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtFormBean.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtFormBean.xml	Thu Jul 29 19:54:58 2004
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+   <ses:sessionName>CtFormBean</ses:sessionName>
+   <ses:tester>Daryl</ses:tester>
+   <ses:startDate>29 Jul 2004, 08:09:44.344 PM MDT</ses:startDate>
+   <ses:description>Verification test of the Form name, type and scope attributes</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/coretags/form/bean/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>34419EBDF09874DCE1E5D90C768B2EB8</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*</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</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=34419EBDF09874DCE1E5D90C768B2EB8</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)</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/coretags/form/bean/index.jsp">
+    </head>
+    <body>
+    <h4>Explicit Form Bean</h4>
+    <p style="color:green">This test will create a bean that is used to load the form
+    values.  Three attributes are used to cause a bean to be created and then used to populate
+    the form.  The <b>name</b> attribute names the bean in the attribute map.  The <b>type</b>
+    specifies the type of the bean.  The <b>scope</b> defines the scope to look for the bean.  This
+    is either session or request.
+    <br>
+    This is a single page test.  
+    </p>
+    <hr>
+    <form name="ctFormBean" action="/coreWeb/coretags/form/bean/begin.do" method="post">
+        <p>
+            Type: <input type="text" name="{actionForm.type}" value="Default Type Value"><br>
+            <input type="submit" value="Submit">
+        </p>
+    </form>
+    </body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>29 Jul 2004, 08:09:50.493 PM MDT</ses:endDate>
+   <ses:testCount>1</ses:testCount>
+</ses:recorderSession>

Added: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtFormBeanError.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtFormBeanError.xml	Thu Jul 29 19:54:58 2004
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+   <ses:sessionName>CtFormBeanError</ses:sessionName>
+   <ses:tester>Daryl</ses:tester>
+   <ses:startDate>29 Jul 2004, 08:10:33.695 PM MDT</ses:startDate>
+   <ses:description>Verification of errors produced by not using the Form name,type, and scope attributes</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/coretags/form/beanerror/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>1A1EE0ABF83C4473A788A08E59B620EC</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*</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</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=1A1EE0ABF83C4473A788A08E59B620EC</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)</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/coretags/form/beanerror/index.jsp">
+    </head>
+    <body>
+    <h4>Explicit Form Bean Errors</h4>
+    <p style="color:green">This verifies errors that are produced when the name, type, and scope attributes
+    are not used correctly.  In the first, no type is specified.  In the second and third a bad type
+    is specified.
+    <br>
+    This is a single page test.  
+    </p>
+    
+    <hr>
+    <p>No Type Specified:
+    <span style="color:red;background-color:white">
+ [<b>Tag Error:1</b>, Found in tag <b>Form</b>]</span>
+    </p>
+    <p>Bad Type:
+    <span style="color:red;background-color:white">
+ [<b>Tag Error:2</b>, Found in tag <b>Form</b>]</span>
+    </p>
+    <p>Non-form Type Specified:
+    <span style="color:red;background-color:white">
+ [<b>Tag Error:3</b>, Found in tag <b>Form</b>]</span>
+    <p>No Name Specified:
+    <span style="color:red;background-color:white">
+ [<b>Tag Error:4</b>, Found in tag <b>Form</b>]</span>
+    </p>
+    </p>
+    <div> <hr /><table border="1" cellspacing="0" style="color:red;background-color:white">
+ <tr><th colspan="6">Page Errors</th></tr>
+ <tr><th>Error Number</th><th>Tag Type</th><th colspan="4">Error</th></tr>
+<tr><th>1</th><th>Form</th><th>Message</th><td>The Form must have a type attribute if it has a name attribute.</td></tr>
+<tr><th>2</th><th>Form</th><th>Message</th><td>The specified type of the Form was not a legal type.</td></tr>
+<tr><th>3</th><th>Form</th><th>Message</th><td>The specified type of the Form was not a legal type.</td></tr>
+<tr><th>4</th><th>Form</th><th>Message</th><td>The specified type of the Form was not a legal type.</td></tr>
+</table></div>
+</body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>29 Jul 2004, 08:10:40.595 PM MDT</ses:endDate>
+   <ses:testCount>1</ses:testCount>
+</ses:recorderSession>

Added: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtFormErrors.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtFormErrors.xml	Thu Jul 29 19:54:58 2004
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+   <ses:sessionName>CtFormErrors</ses:sessionName>
+   <ses:tester>Daryl</ses:tester>
+   <ses:startDate>29 Jul 2004, 08:11:15.715 PM MDT</ses:startDate>
+   <ses:description>Verification of the basic errors produced by the Form tag.</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/coretags/form/errors/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>6935D75188645535943E6726A79181B1</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*</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</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=6935D75188645535943E6726A79181B1</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)</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/coretags/form/errors/index.jsp">
+    </head>
+    <body>
+    <h4>Form Errors</h4>
+    <p style="color:green">This verifies the basic errors raised by the form tag.  
+    </p>
+    <ul style="color:green">
+    <li>Nested Forms -- Forms may not be nested</li>
+    <li>Bad Action -- Form has an invalid action</li>
+    </ul>
+    <p style="color:green">This verifies the basic errors raised by the form tag.  
+    This is a single page test.  
+    </p>
+    <hr>
+    <ul>
+    <li><form id="Netui_Form_0" action="/coreWeb/coretags/form/errors/begin.do" method="post" style="display:inline"><span style="color:red;background-color:white">
+ [<b>Tag Error:1</b>, Found in tag <b>Form</b>]</span></form><span> -- form inside a form</span></li>
+    <li><span style="color:red;background-color:white">
+ [<b>Tag Error:2</b>, Found in tag <b>Form</b>]</span><span> -- bad action</span></li>
+    </ul>    
+    <div> <hr /><table border="1" cellspacing="0" style="color:red;background-color:white">
+ <tr><th colspan="6">Page Errors</th></tr>
+ <tr><th>Error Number</th><th>Tag Type</th><th colspan="4">Error</th></tr>
+<tr><th>1</th><th>Form</th><th>Message</th><td>A Form cannot be enclosed by another Form.</td></tr>
+<tr><th>2</th><th>Form</th><th>Message</th><td>Action 'badAction' is not a valid action.</td></tr>
+</table></div>
+</body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>29 Jul 2004, 08:11:22.275 PM MDT</ses:endDate>
+   <ses:testCount>1</ses:testCount>
+</ses:recorderSession>

Added: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtFormNullBinding.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtFormNullBinding.xml	Thu Jul 29 19:54:58 2004
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+   <ses:sessionName>CtFormNullBinding</ses:sessionName>
+   <ses:tester>Daryl</ses:tester>
+   <ses:startDate>29 Jul 2004, 08:12:00.920 PM MDT</ses:startDate>
+   <ses:description>Test of binding to null of the Form attributes.</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/coretags/form/nullbinding/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>9154D95ADE459C9D994E2CEAA94579A9</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*</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</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=9154D95ADE459C9D994E2CEAA94579A9</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)</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/coretags/form/nullbinding/index.jsp">
+    </head>
+    <body>
+    <h4>Form Null Binding</h4>
+    <p style="color:green">Test bind null value to the attributes of a form.  Below are two set of tests against form.
+    In the first, we are binding to the attributes who's values are ignored and no attribute is output.  In the second
+    a value is required so an error is generated.
+    <br>
+    This is a single page test.  
+    </p>
+    <hr>
+    <ul>
+    <li><form id="Netui_Form_0" action="/coreWeb/coretags/form/nullbinding/begin.do" method="post" style="display:inline"></form><span> -- focus</span></li>
+    <li><form id="Netui_Form_1" action="/coreWeb/coretags/form/nullbinding/begin.do" method="post" style="display:inline"></form><span> -- target</span></li>
+    <li><form id="Netui_Form_2" action="/coreWeb/coretags/form/nullbinding/begin.do" method="post" style="display:inline"></form><span> -- enctype</span></li>
+    <li><form id="Netui_Form_3" action="/coreWeb/coretags/form/nullbinding/begin.do" method="post" style="display:inline"></form><span> -- location</span></li>
+    <li><form id="Netui_Form_4" action="/coreWeb/coretags/form/nullbinding/begin.do" method="post" style="display:inline"></form><span> -- title</span></li>
+    </ul>
+    <hr>
+    <ul>
+    <li><span style="color:red;background-color:white">
+ [<b>Tag Error:1</b>, Found in tag <b>Form</b>]</span><span> -- method</span></li>
+    <li><span style="color:red;background-color:white">
+ [<b>Tag Error:2</b>, Found in tag <b>Form</b>]</span><span> -- scope</span></li>
+    <li><span style="color:red;background-color:white">
+ [<b>Tag Error:3</b>, Found in tag <b>Form</b>]</span><span> -- action</span></li>
+    <li><span style="color:red;background-color:white">
+ [<b>Tag Error:4</b>, Found in tag <b>Form</b>]</span><span> -- tagId</span></li>
+    <li><span style="color:red;background-color:white">
+ [<b>Tag Error:5</b>, Found in tag <b>Form</b>]</span><span> -- type</span></li>
+    <li><span style="color:red;background-color:white">
+ [<b>Tag Error:6</b>, Found in tag <b>Form</b>]</span><span> -- name</span></li>
+    </ul>
+    
+    <div> <hr /><table border="1" cellspacing="0" style="color:red;background-color:white">
+ <tr><th colspan="6">Page Errors</th></tr>
+ <tr><th>Error Number</th><th>Tag Type</th><th colspan="4">Error</th></tr>
+<tr><th>1</th><th>Form</th><th>Message</th><td>The type of a button must be one of submit, button or reset, found ''.</td></tr>
+<tr><th>2</th><th>Form</th><th>Message</th><td>Attribute 'scope' is required to have a value.  The value "" is illegal.  This is often cause by binding to an object with a null value.</td></tr>
+<tr><th>3</th><th>Form</th><th>Message</th><td>Attribute 'action' is required to have a value.  The value "" is illegal.  This is often cause by binding to an object with a null value.</td></tr>
+<tr><th>4</th><th>Form</th><th>Message</th><td>Attribute 'tagId' is required to have a value.  The value "" is illegal.  This is often cause by binding to an object with a null value.</td></tr>
+<tr><th>5</th><th>Form</th><th>Message</th><td>Attribute 'type' is required to have a value.  The value "" is illegal.  This is often cause by binding to an object with a null value.</td></tr>
+<tr><th>6</th><th>Form</th><th>Message</th><td>Attribute 'name' is required to have a value.  The value "" is illegal.  This is often cause by binding to an object with a null value.</td></tr>
+</table></div>
+</body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>29 Jul 2004, 08:12:08.000 PM MDT</ses:endDate>
+   <ses:testCount>1</ses:testCount>
+</ses:recorderSession>