You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ek...@apache.org on 2006/05/05 16:50:13 UTC

svn commit: r400086 - in /beehive/trunk/netui: src/pageflow/org/apache/beehive/netui/script/common/ src/pageflow/org/apache/beehive/netui/script/el/ src/tags-html/org/apache/beehive/netui/tags/ test/webapps/drt/src/databinding/expressions/ test/webapps...

Author: ekoneil
Date: Fri May  5 07:50:05 2006
New Revision: 400086

URL: http://svn.apache.org/viewcvs?rev=400086&view=rev
Log:
Fix for BEEHIVE-1108.  This changes actionForm implict object binding to work on the action form object stored in the request which allows actionForm.foo expressions to work in file includes, jsp includes, and tag files.

BB: self
Test: NetUI pass


Added:
    beehive/trunk/netui/test/webapps/drt/src/databinding/expressions/
    beehive/trunk/netui/test/webapps/drt/src/databinding/expressions/actionforminclude/
    beehive/trunk/netui/test/webapps/drt/src/databinding/expressions/actionforminclude/Controller.java
    beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ExpressionFormWithIncludes.xml
    beehive/trunk/netui/test/webapps/drt/web/WEB-INF/tags/org/apache/beehive/netui/test/databinding/tagfiles/forminclude.tag
    beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/
    beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/form.jsp
    beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/formwithfileinclude.jsp
    beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/formwithjspinclude.jsp
    beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/formwithtagfile.jsp
    beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/index.jsp
Modified:
    beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java
    beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionEvaluatorImpl.java
    beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIReadVariableResolver.java
    beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java
    beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/ExpressionHandling.java
    beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml

Modified: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java?rev=400086&r1=400085&r2=400086&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java Fri May  5 07:50:05 2006
@@ -25,6 +25,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.jsp.JspContext;
+import javax.servlet.jsp.PageContext;
 import javax.servlet.jsp.el.VariableResolver;
 
 import org.apache.beehive.netui.pageflow.FacesBackingBean;
@@ -34,13 +35,14 @@
 import org.apache.beehive.netui.pageflow.internal.AnyBeanActionForm;
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
 import org.apache.beehive.netui.script.el.NetUIUpdateVariableResolver;
+import org.apache.beehive.netui.script.el.NetUIReadVariableResolver;
 import org.apache.beehive.netui.util.logging.Logger;
 
 /**
  * Utilities for loading NetUI implicit objects into various data binding scopes such as the
  * PageContext, ServletRequest, HttpSession, and ServletContext.
  */
-public class ImplicitObjectUtil {
+public final class ImplicitObjectUtil {
 
     private static final Logger LOGGER = Logger.getInstance(ImplicitObjectUtil.class);
 
@@ -67,8 +69,7 @@
                                            HttpServletResponse response,
                                            ServletContext servletContext,
                                            PageFlowController currentPageFlow) {
-        // @todo: new feature -- add an interceptor chain used to provide pluggability for adding
-        // new implicit objects to the request
+        // @todo: add an interceptor chain here for putting implicit objects into the request
         loadPageFlow(request, currentPageFlow);
 
         // @todo: need to move bundleMap creation to a BundleMapFactory
@@ -219,10 +220,9 @@
      * This method is used by the expression engine to get the current global app.  If no global app
      * is found, an exception will be thrown.
      * @param request the request
-     * @param response the response
      * @return the global app
      */
-    public static GlobalApp getGlobalApp(ServletRequest request, ServletResponse response) {
+    public static GlobalApp getGlobalApp(ServletRequest request) {
         assert request instanceof HttpServletRequest;
         GlobalApp ga = PageFlowUtils.getGlobalApp((HttpServletRequest)request);
         if(ga == null) {
@@ -242,7 +242,7 @@
     public static VariableResolver getUpdateVariableResolver(ServletRequest request,
                                                              ServletResponse response,
                                                              boolean isHandlingPost) {
-        Object form = ImplicitObjectUtil.unwrapForm(request.getAttribute(org.apache.struts.taglib.html.Constants.BEAN_KEY));
+        Object form = ImplicitObjectUtil.unwrapForm(getActionForm(request));
         return new NetUIUpdateVariableResolver(form, request, response, isHandlingPost);
     }
 
@@ -271,6 +271,18 @@
      */
     public static VariableResolver getReadVariableResolver(JspContext jspContext) {
         assert jspContext != null;
-        return jspContext.getVariableResolver();
+
+        /* todo: ugly ugly ugly...getting the appropriate variable resolver should be easier than this */
+        Object actionForm = getActionForm(((PageContext)jspContext).getRequest());
+
+        NetUIReadVariableResolver netuiVariableResolver =
+            new NetUIReadVariableResolver(jspContext.getVariableResolver());
+        netuiVariableResolver.setActionForm(unwrapForm(actionForm));
+
+        return netuiVariableResolver;
+    }
+
+    private static Object getActionForm(ServletRequest request) {
+        return request.getAttribute(org.apache.struts.taglib.html.Constants.BEAN_KEY);
     }
 }

Modified: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionEvaluatorImpl.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionEvaluatorImpl.java?rev=400086&r1=400085&r2=400086&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionEvaluatorImpl.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionEvaluatorImpl.java Fri May  5 07:50:05 2006
@@ -49,13 +49,15 @@
 
     public Object evaluateStrict(String expression, VariableResolver variableResolver)
         throws ExpressionEvaluationException {
-        NetUIReadVariableResolver vr = null;
+
+        assert variableResolver instanceof NetUIReadVariableResolver;
+
+        NetUIReadVariableResolver netuiVariableResolver = (NetUIReadVariableResolver)variableResolver;
         try {
-            vr = new NetUIReadVariableResolver(variableResolver);
-            return ParseUtils.evaluate(expression, vr);
+            return ParseUtils.evaluate(expression, netuiVariableResolver);
         }
         catch(Exception e) {
-            String contextStr = ParseUtils.getContextString(vr.getAvailableVariables());
+            String contextStr = ParseUtils.getContextString(netuiVariableResolver.getAvailableVariables());
             String msg =
                 "Caught exception when evaluating expression \"" +
                     expression +

Modified: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIReadVariableResolver.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIReadVariableResolver.java?rev=400086&r1=400085&r2=400086&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIReadVariableResolver.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIReadVariableResolver.java Fri May  5 07:50:05 2006
@@ -31,15 +31,25 @@
     private static final Logger LOGGER = Logger.getInstance(NetUIReadVariableResolver.class);
 
     private VariableResolver _vr = null;
+    private Object _actionForm = null;
 
     public NetUIReadVariableResolver(VariableResolver vr) {
         assert vr != null;
         _vr = vr;
     }
 
+    public void setActionForm(Object actionForm) {
+        _actionForm = actionForm;
+    }
+
     public Object resolveVariable(String name) {
+        if(name == null)
+            return null;
+
         try {
-            return _vr.resolveVariable(name);
+            if(name.equals("actionForm"))
+                return _actionForm;
+            else return _vr.resolveVariable(name);
         }
         catch(ELException e) {
             String message = "Could not resolve variable named \"" + name + "\".  Cause: " + e;
@@ -49,6 +59,8 @@
     }
 
     public String[] getAvailableVariables() {
-        return new String[]{"actionForm", "pageFlow", "globalApp", "request", "session", "application", "pageContext", "bundle", "container", "url", "pageInput"};
+        return new String[]{
+            "actionForm", "pageFlow", "globalApp", "request", "session", "application",
+            "pageContext", "bundle", "container", "url", "pageInput"};
     }
 }

Modified: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java?rev=400086&r1=400085&r2=400086&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java Fri May  5 07:50:05 2006
@@ -58,7 +58,7 @@
         else if(name.equals("pageFlow"))
             return ImplicitObjectUtil.getPageFlow(_request, _response);
         else if(name.equals("globalApp"))
-            return ImplicitObjectUtil.getGlobalApp(_request, _response);
+            return ImplicitObjectUtil.getGlobalApp(_request);
         else if(name.equals("sharedFlow"))
             return ImplicitObjectUtil.getSharedFlow(_request);
         else if(name.equals("requestScope")) {

Modified: beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/ExpressionHandling.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/ExpressionHandling.java?rev=400086&r1=400085&r2=400086&view=diff
==============================================================================
--- beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/ExpressionHandling.java (original)
+++ beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/ExpressionHandling.java Fri May  5 07:50:05 2006
@@ -156,17 +156,16 @@
     private Object evaluateExpressionInternal(String expression, String attrName, PageContext pageContext)
             throws JspException
     {
-        if (logger.isDebugEnabled()) logger.debug("evaluate expression=\"" + expression + "\"");
+        if (logger.isDebugEnabled())
+            logger.debug("evaluate expression=\"" + expression + "\"");
 
         Object result = null;
-
         try {
-            result = getExpressionEvaluator().evaluateStrict(expression, pageContext.getVariableResolver());
+            VariableResolver vr = ImplicitObjectUtil.getReadVariableResolver(pageContext);
+            result = getExpressionEvaluator().evaluateStrict(expression, vr);
         }
         catch (ExpressionEvaluationException ee) {
-            // if there is an expression evaluation error set the error and
-            // return null;
-
+            // if there is an expression evaluation error set the error and return null
             if (logger.isWarnEnabled())
                 logger.warn(Bundle.getString("Tags_ExpressionEvaluationFailure", expression));
 
@@ -196,7 +195,7 @@
      * tag and release during <code>localRelease</code>.
      * @return the <code>ExpressionEvalutor</code> for tis tag.
      */
-    private final ExpressionEvaluator getExpressionEvaluator()
+    private ExpressionEvaluator getExpressionEvaluator()
     {
         if (ee == null)
             ee = ExpressionEvaluatorFactory.getInstance();

Added: beehive/trunk/netui/test/webapps/drt/src/databinding/expressions/actionforminclude/Controller.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/src/databinding/expressions/actionforminclude/Controller.java?rev=400086&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/src/databinding/expressions/actionforminclude/Controller.java (added)
+++ beehive/trunk/netui/test/webapps/drt/src/databinding/expressions/actionforminclude/Controller.java Fri May  5 07:50:05 2006
@@ -0,0 +1,77 @@
+/**
+ * Created by IntelliJ IDEA.
+ * User: ekoneil
+ * Date: May 4, 2006
+ * Time: 11:17:41 AM
+ * To change this template use File | Settings | File Templates.
+ */
+package databinding.expressions.actionforminclude;
+
+import javax.servlet.http.HttpSession;
+
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+@Jpf.Controller(
+    forwards = {
+    @Jpf.Forward(name = "index", path = "index.jsp"),
+    @Jpf.Forward(name = "fileinclude", path = "formwithfileinclude.jsp"),
+    @Jpf.Forward(name = "jspinclude", path = "formwithjspinclude.jsp"),
+    @Jpf.Forward(name = "tagfile", path = "formwithtagfile.jsp")
+        }
+)
+public class Controller
+    extends PageFlowController {
+
+    private static final Log LOG = LogFactory.getLog("webapp");
+
+    @Jpf.Action()
+    public Forward begin() {
+        return new Forward("index");
+    }
+
+    @Jpf.Action
+    public Forward showFileInclude() {
+        return new Forward("fileinclude");
+    }
+
+    @Jpf.Action
+    public Forward submitFileInclude(MessageForm form) {
+        return new Forward("fileinclude", form);
+    }
+
+    @Jpf.Action
+    public Forward showJspInclude() {
+        return new Forward("jspinclude");
+    }
+
+    @Jpf.Action
+    public Forward submitJspInclude(MessageForm form) {
+        return new Forward("jspinclude", form);
+    }
+
+    @Jpf.Action
+    public Forward showTagFile() {
+        return new Forward("jspinclude");
+    }
+
+    @Jpf.Action
+    public Forward submitTagFile(MessageForm form) {
+        return new Forward("tagfile", form);
+    }
+
+    public static class MessageForm {
+        private String _message;
+
+        public String getMessage() {
+            return _message;
+        }
+
+        public void setMessage(String message) {
+            _message = message;
+        }
+    }
+}

Modified: beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml?rev=400086&r1=400085&r2=400086&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml (original)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml Fri May  5 07:50:05 2006
@@ -3925,6 +3925,18 @@
             <feature>HTML</feature>
          </features>
       </test>
+       <test>
+          <name>ExpressionFormWithIncludes</name>
+          <description>Use of expressions binding to action forms from includes</description>
+          <webapp>coreWeb</webapp>
+          <categories>
+             <category>bvt</category>
+             <category>bvt.struts11</category>
+          </categories>
+          <features>
+             <feature>Expression</feature>
+          </features>
+       </test>
       <test>
          <name>ExternalRedirect</name>
          <description>Test of redirecting outside the webapp using the externalRedirect attribute on @Jpf.Forward.</description>

Added: beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ExpressionFormWithIncludes.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ExpressionFormWithIncludes.xml?rev=400086&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ExpressionFormWithIncludes.xml (added)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ExpressionFormWithIncludes.xml Fri May  5 07:50:05 2006
@@ -0,0 +1,618 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<recorderSession xmlns="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+<sessionName>ExpressionFormWithIncludes</sessionName>
+<tester>ekoneil</tester>
+<startDate>04 May 2006, 04:29:34.812 PM MDT</startDate>
+<description>Test that ensures that actionForm implicit object binding works from JSP into file includes, jsp includes, and tag files.</description>
+<tests>
+<test>
+<testNumber>1</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/databinding/expressions/actionforminclude/begin.do</uri>
+<method>GET</method>
+<parameters>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>294C655560F843FD717BB6013FDDCB42</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.5</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=294C655560F843FD717BB6013FDDCB42</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<responseBody>
+<![CDATA[<html>
+  <head>
+      <title>ActionForm Implicit Object Include Tests</title>
+  </head>
+  <body>
+  <a href="showFileInclude.do">Form with File Include</a><br/>
+  <a href="showJspInclude.do">Form with JSP Include</a><br/>
+  <a href="showTagFile.do">Form with .tag file</a><br/>
+  </body>
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>2</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/databinding/expressions/actionforminclude/showFileInclude.do</uri>
+<method>GET</method>
+<parameters>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>294C655560F843FD717BB6013FDDCB42</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.5</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=294C655560F843FD717BB6013FDDCB42</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/databinding/expressions/actionforminclude/begin.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<responseBody>
+<![CDATA[<html>
+  <head>
+      <title>NetUI JSP</title>
+  </head>
+  <body>
+  <form action="/coreWeb/databinding/expressions/actionforminclude/submitFileInclude.do" method="post">
+      
+
+
+
+
+Message: <input type="text" name="{actionForm.message}">
+      <input type="submit" value="Submit">
+  </form>
+  </body>
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>3</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/databinding/expressions/actionforminclude/submitFileInclude.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>{actionForm.message}</name>
+<value>file include</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>294C655560F843FD717BB6013FDDCB42</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.5</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>37</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=294C655560F843FD717BB6013FDDCB42</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/databinding/expressions/actionforminclude/showFileInclude.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<responseBody>
+<![CDATA[<html>
+  <head>
+      <title>NetUI JSP</title>
+  </head>
+  <body>
+  <form action="/coreWeb/databinding/expressions/actionforminclude/submitFileInclude.do" method="post">
+      
+
+
+
+
+Message: <input type="text" name="{actionForm.message}" value="file include">
+      <input type="submit" value="Submit">
+  </form>
+  </body>
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>4</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/databinding/expressions/actionforminclude/showJspInclude.do</uri>
+<method>GET</method>
+<parameters>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>294C655560F843FD717BB6013FDDCB42</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.5</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=294C655560F843FD717BB6013FDDCB42</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/databinding/expressions/actionforminclude/begin.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<responseBody>
+<![CDATA[<html>
+  <head>
+      <title>NetUI JSP</title>
+  </head>
+  <body>
+  <form action="/coreWeb/databinding/expressions/actionforminclude/submitJspInclude.do" method="post">
+      
+
+
+
+
+Message: <input type="text" name="{actionForm.message}">
+      <input type="submit" value="Submit">
+  </form>
+  </body>
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>5</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/databinding/expressions/actionforminclude/submitJspInclude.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>{actionForm.message}</name>
+<value>jsp include</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>294C655560F843FD717BB6013FDDCB42</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.5</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>36</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=294C655560F843FD717BB6013FDDCB42</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/databinding/expressions/actionforminclude/showJspInclude.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<responseBody>
+<![CDATA[<html>
+  <head>
+      <title>NetUI JSP</title>
+  </head>
+  <body>
+  <form action="/coreWeb/databinding/expressions/actionforminclude/submitJspInclude.do" method="post">
+      
+
+
+
+
+Message: <input type="text" name="{actionForm.message}" value="jsp include">
+      <input type="submit" value="Submit">
+  </form>
+  </body>
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>6</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/databinding/expressions/actionforminclude/showTagFile.do</uri>
+<method>GET</method>
+<parameters>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>294C655560F843FD717BB6013FDDCB42</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.5</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=294C655560F843FD717BB6013FDDCB42</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/databinding/expressions/actionforminclude/begin.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<responseBody>
+<![CDATA[<html>
+  <head>
+      <title>NetUI JSP</title>
+  </head>
+  <body>
+  <form action="/coreWeb/databinding/expressions/actionforminclude/submitJspInclude.do" method="post">
+      
+
+
+
+
+Message: <input type="text" name="{actionForm.message}">
+      <input type="submit" value="Submit">
+  </form>
+  </body>
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>7</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/databinding/expressions/actionforminclude/submitJspInclude.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>{actionForm.message}</name>
+<value>.tag file</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>294C655560F843FD717BB6013FDDCB42</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.5</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>34</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=294C655560F843FD717BB6013FDDCB42</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/databinding/expressions/actionforminclude/showTagFile.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<responseBody>
+<![CDATA[<html>
+  <head>
+      <title>NetUI JSP</title>
+  </head>
+  <body>
+  <form action="/coreWeb/databinding/expressions/actionforminclude/submitJspInclude.do" method="post">
+      
+
+
+
+
+Message: <input type="text" name="{actionForm.message}" value=".tag file">
+      <input type="submit" value="Submit">
+  </form>
+  </body>
+</html>]]>
+</responseBody>
+</response>
+</test>
+</tests>
+<endDate>04 May 2006, 04:30:12.562 PM MDT</endDate>
+<testCount>7</testCount>
+</recorderSession>

Added: beehive/trunk/netui/test/webapps/drt/web/WEB-INF/tags/org/apache/beehive/netui/test/databinding/tagfiles/forminclude.tag
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/web/WEB-INF/tags/org/apache/beehive/netui/test/databinding/tagfiles/forminclude.tag?rev=400086&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/web/WEB-INF/tags/org/apache/beehive/netui/test/databinding/tagfiles/forminclude.tag (added)
+++ beehive/trunk/netui/test/webapps/drt/web/WEB-INF/tags/org/apache/beehive/netui/test/databinding/tagfiles/forminclude.tag Fri May  5 07:50:05 2006
@@ -0,0 +1,4 @@
+<%@ tag body-content="empty" %>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
+
+Message: <netui:textBox dataSource="actionForm.message"/>
\ No newline at end of file

Added: beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/form.jsp
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/form.jsp?rev=400086&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/form.jsp (added)
+++ beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/form.jsp Fri May  5 07:50:05 2006
@@ -0,0 +1,6 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ 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"%>
+
+Message: <netui:textBox dataSource="actionForm.message"/>
\ No newline at end of file

Added: beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/formwithfileinclude.jsp
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/formwithfileinclude.jsp?rev=400086&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/formwithfileinclude.jsp (added)
+++ beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/formwithfileinclude.jsp Fri May  5 07:50:05 2006
@@ -0,0 +1,15 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ 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"%>
+<html>
+  <head>
+      <title>NetUI JSP</title>
+  </head>
+  <body>
+  <netui:form action="submitFileInclude">
+      <%@ include file="form.jsp"%>
+      <netui:button>Submit</netui:button>
+  </netui:form>
+  </body>
+</html>
\ No newline at end of file

Added: beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/formwithjspinclude.jsp
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/formwithjspinclude.jsp?rev=400086&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/formwithjspinclude.jsp (added)
+++ beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/formwithjspinclude.jsp Fri May  5 07:50:05 2006
@@ -0,0 +1,22 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: ekoneil
+  Date: May 4, 2006
+  Time: 11:07:54 AM
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ 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"%>
+<html>
+  <head>
+      <title>NetUI JSP</title>
+  </head>
+  <body>
+  <netui:form action="submitJspInclude">
+      <jsp:include page="form.jsp"/>
+      <netui:button>Submit</netui:button>
+  </netui:form>
+  </body>
+</html>
\ No newline at end of file

Added: beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/formwithtagfile.jsp
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/formwithtagfile.jsp?rev=400086&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/formwithtagfile.jsp (added)
+++ beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/formwithtagfile.jsp Fri May  5 07:50:05 2006
@@ -0,0 +1,16 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ 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"%>
+<%@ taglib prefix="tags" tagdir="/WEB-INF/tags/org/apache/beehive/netui/test/databinding/tagfiles" %>
+<html>
+  <head>
+      <title>NetUI JSP</title>
+  </head>
+  <body>
+  <netui:form action="submitTagFile">
+      <tags:forminclude/>
+      <netui:button>Submit</netui:button>
+  </netui:form>
+  </body>
+</html>
\ No newline at end of file

Added: beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/index.jsp
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/index.jsp?rev=400086&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/index.jsp (added)
+++ beehive/trunk/netui/test/webapps/drt/web/databinding/expressions/actionforminclude/index.jsp Fri May  5 07:50:05 2006
@@ -0,0 +1,21 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: ekoneil
+  Date: May 4, 2006
+  Time: 11:07:22 AM
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ 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"%>
+<html>
+  <head>
+      <title>ActionForm Implicit Object Include Tests</title>
+  </head>
+  <body>
+  <a href="showFileInclude.do">Form with File Include</a><br/>
+  <a href="showJspInclude.do">Form with JSP Include</a><br/>
+  <a href="showTagFile.do">Form with .tag file</a><br/>
+  </body>
+</html>
\ No newline at end of file