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 2005/02/24 17:41:41 UTC

svn commit: r155208 - in incubator/beehive/trunk/netui: src/javascript/tags-datagrid/ src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/ src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/sql/ test/src/junitTests/org/apache/beehive/netui/test/datagrid/ test/webapps/drt/coreWeb/databinding/datagrid/j348/ test/webapps/drt/testRecorder/config/ test/webapps/drt/testRecorder/tests/

Author: ekoneil
Date: Thu Feb 24 08:41:39 2005
New Revision: 155208

URL: http://svn.apache.org/viewcvs?view=rev&rev=155208
Log:
Fix for J348.  Filter URLs are now friendly with existing URL parameters.

Add a BVT to check this.

Also refactored the SQLSupport class so that client code obtains an instance rather than making static calls, so the following:

  SQLSupport.createFilterClause(...);

is now 

  SQLSupport.getInstance().createFilterClause(...);

This is necessary so that database-specific configuration options (like the quote character) are settable on an instance of the SQLSupport class.

BB: self
DRT: NetUI / datagrid pass


Added:
    incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/j348/
    incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/j348/Controller.jpf   (with props)
    incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/j348/index.jsp   (with props)
    incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridFilterSmoke.xml
Modified:
    incubator/beehive/trunk/netui/src/javascript/tags-datagrid/netui-datagrid.js
    incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridURLService.java
    incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/sql/SQLSupport.java
    incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterCodecTest.java
    incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml

Modified: incubator/beehive/trunk/netui/src/javascript/tags-datagrid/netui-datagrid.js
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/javascript/tags-datagrid/netui-datagrid.js?view=diff&r1=155207&r2=155208
==============================================================================
--- incubator/beehive/trunk/netui/src/javascript/tags-datagrid/netui-datagrid.js (original)
+++ incubator/beehive/trunk/netui/src/javascript/tags-datagrid/netui-datagrid.js Thu Feb 24 08:41:39 2005
@@ -95,6 +95,9 @@
     qs += this._urlParams[i].toUrlParam();
   }
 
+  if(qs.length > 1)
+    qs += '&';
+
   for(var i = 0; i < this._filters.length; i++) {
     /* allow parameters to return null to indicate that there's no parameter to add */
     var p = this._filters[i].toUrlParam();

Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridURLService.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridURLService.java?view=diff&r1=155207&r2=155208
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridURLService.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/DataGridURLService.java Thu Feb 24 08:41:39 2005
@@ -212,72 +212,6 @@
 
     /* --------------------------------------------------
 
-       Filter Methods
-
-       -------------------------------------------------- */
-    /**
-     * Get a query parameter map but omit the filters for the
-     * given namespace with the given filter expression.
-     *
-     * @param namespace
-     * @param filterExpression
-     * @return
-     */
-    public Map getQueryParamsOmitFilter(String namespace, String filterExpression) {
-        Map params = new HashMap();
-
-        for(Object key : _urlParams.keySet()) {
-            if(key.equals(_filterCodec.getQueryParamKey()))
-                continue;
-            else params.put(key, _urlParams.get(key));
-        }
-
-        if(_filters != null) {
-            ArrayList filterList = new ArrayList();
-            for(String curNamespace : _filters.keySet()) {
-                List<Filter> filters = _filters.get(curNamespace);
-
-                 filterList.add(_filterCodec.encode(curNamespace, filters, filterExpression));
-            }
-
-            params.put(_filterCodec.getQueryParamKey(), (String[])filterList.toArray(new String[0]));
-        }
-
-        return params;
-    }
-
-    /**
-     *
-     * @param namespace
-     * @return
-     */
-    public Map getQueryParamsOmitAllFilters(String namespace) {
-        Map params = new HashMap();
-
-        for(Object key : _urlParams.keySet()) {
-            if(key.equals(_filterCodec.getQueryParamKey()))
-                continue;
-            else params.put(key, _urlParams.get(key));
-        }
-
-        if(_filters != null) {
-            ArrayList filterList = new ArrayList();
-            for(String curNamespace : _filters.keySet()) {
-                if(curNamespace.equals(namespace))
-                    continue;
-
-                List<Filter> filters = _filters.get(curNamespace);
-                String filterParamValue = _filterCodec.encode(curNamespace, filters);
-                filterList.add(filterParamValue);
-            }
-            params.put(_filterCodec.getQueryParamKey(), (String[])filterList.toArray(new String[0]));
-        }
-
-        return params;
-    }
-
-    /* --------------------------------------------------
-
        Implementation details
 
        -------------------------------------------------- */

Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/sql/SQLSupport.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/sql/SQLSupport.java?view=diff&r1=155207&r2=155208
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/sql/SQLSupport.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/sql/SQLSupport.java Thu Feb 24 08:41:39 2005
@@ -60,8 +60,8 @@
     private static final FilterOperation STRING_FILTER_OPERATION = FILTER_OPERATIONS[9];
     private static final FilterOperation OTHER_FILTER_OPERATION = FILTER_OPERATIONS[1];
 
-    /* do not construct */
-    private SQLSupport() {
+    public static SQLSupport getInstance() {
+        return new SQLSupport();
     }
 
     /**
@@ -110,53 +110,68 @@
         return fOp.getAbbreviation();
     }
 
-    public static final String createOrderByFragment(List<Sort> sorts) {
+    public static final FilterOperation mapStringToOperation(String abbrev) {
+        for(FilterOperation fOp : FILTER_OPERATIONS) {
+            if(fOp.getAbbreviation().equals(abbrev))
+                return fOp;
+        }
+        return null;
+    }
+
+    /* non-public constructor */
+    private SQLSupport() {
+    }
+
+    public final String createOrderByFragment(List<Sort> sorts) {
         if(sorts == null || sorts.size() == 0)
             return EMPTY_STRING;
 
-        StringBuilder sb = new StringBuilder();
-        sb.append("ORDER BY ");
+        StringBuilder sql = new StringBuilder();
+        sql.append("ORDER BY ");
+        internalCreateOrderByFragment(sql, sorts);
+        return sql.toString();
+    }
 
-        for(int i = 0; i < sorts.size(); i++) {
-            Sort sort = sorts.get(i);
-            if(i > 0)
-                sb.append(", ");
-            sb.append(sort.getSortExpression());
-            if(sort.getDirection() == SortDirection.DESCENDING)
-                sb.append(" DESC");
-        }
+    public final String createOrderByClause(List<Sort> sorts) {
+        if(sorts == null || sorts.size() == 0)
+            return EMPTY_STRING;
 
-        return sb.toString();
+        StringBuilder sql = new StringBuilder(64);
+        internalCreateOrderByFragment(sql, sorts);
+        return sql.toString();
     }
 
-    public static String createWhereFragment(List<Filter> filters) {
+    public String createWhereClause(List<Filter> filters) {
         if(filters == null || filters.size() == 0)
             return EMPTY_STRING;
 
-        StringBuilder sb = new StringBuilder(64);
-        internalCreateWhereFragment(sb, filters);
-        return sb.toString();
+        StringBuilder sql = new StringBuilder();
+        sql.append("WHERE ");
+        internalCreateWhereFragment(sql, filters);
+        return sql.toString();
     }
 
-    public static String createWhereClause(List<Filter> filters) {
+    public String createWhereFragment(List<Filter> filters) {
         if(filters == null || filters.size() == 0)
             return EMPTY_STRING;
 
-        StringBuilder sb = new StringBuilder();
-        sb.append("WHERE ");
-        internalCreateWhereFragment(sb, filters);
-        return sb.toString();
+        StringBuilder sql = new StringBuilder(64);
+        internalCreateWhereFragment(sql, filters);
+        return sql.toString();
     }
 
-    public static final FilterOperation mapStringToOperation(String abbrev) {
-        for(FilterOperation fOp : FILTER_OPERATIONS) {
-            if(fOp.getAbbreviation().equals(abbrev))
-                return fOp;
+    private void internalCreateOrderByFragment(StringBuilder sql, List<Sort> sorts) {
+        for(int i = 0; i < sorts.size(); i++) {
+            Sort sort = sorts.get(i);
+            if(i > 0)
+                sql.append(", ");
+            sql.append(sort.getSortExpression());
+            if(sort.getDirection() == SortDirection.DESCENDING)
+                sql.append(" DESC");
         }
-        return null;
     }
 
-    private static void internalCreateWhereFragment(StringBuilder sql, List<Filter> filters) {
+    private void internalCreateWhereFragment(StringBuilder sql, List<Filter> filters) {
 
         for(int i = 0; i < filters.size(); i++) {
             Filter filter = filters.get(i);
@@ -257,7 +272,7 @@
         }
     }
 
-    private static String convertSQLPattern(Object o) {
+    private String convertSQLPattern(Object o) {
         String s = o.toString();
         s = s.replaceAll("\\\\", "\\\\\\\\");
         s = s.replaceAll("%", "\\\\%");
@@ -266,13 +281,13 @@
     }
 
 
-    private static String convertSQLString(Object o) {
+    private String convertSQLString(Object o) {
         String s = o.toString();
         s = s.replaceAll("'", "''");
         return s;
     }
 
-    private static void addParameter(StringBuilder sql, Object value, FilterTypeHint typeHint) {
+    private void addParameter(StringBuilder sql, Object value, FilterTypeHint typeHint) {
         if(typeHint == FilterTypeHint.STRING) {
             sql.append(QUOTE_CHAR);
             sql.append(value);
@@ -282,7 +297,7 @@
         }
     }
 
-    private static String lookupOperator(FilterOperationHint op) {
+    private String lookupOperator(FilterOperationHint op) {
         switch(op) {
         case EQUAL: return "=";
         case NOT_EQUAL: return "!=";

Modified: incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterCodecTest.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterCodecTest.java?view=diff&r1=155207&r2=155208
==============================================================================
--- incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterCodecTest.java (original)
+++ incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/FilterCodecTest.java Thu Feb 24 08:41:39 2005
@@ -75,6 +75,7 @@
         assertEquals("ID", filters.get(0).getFilterExpression());
     }
 
+/*
     public void testDataGridStateService1() {
         DataGridTestUtil.initQueryString(_request,
             "netui_filter=" + _namespace + ";ZIP~eq~12345,CUSTOMERNAME~eq~homer&netui_filter=products;ID~ne~1234");
@@ -116,7 +117,7 @@
         assertEquals(_namespace + ";ZIP~eq~12345", qp[0]);
         assertEquals("products;ID~ne~1234", qp[1]);
     }
-
+*/
     public void testEncode1() {
         String customerNameParam = _namespace + ";CUSTOMERNAME~eq~homer";
         DataGridTestUtil.initQueryString(_request, "netui_filter=" + customerNameParam + "&netui_filter=products;ID~ne~1234");

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/j348/Controller.jpf
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/j348/Controller.jpf?view=auto&rev=155208
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/j348/Controller.jpf (added)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/j348/Controller.jpf Thu Feb 24 08:41:39 2005
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
+ */
+package databinding.datagrid.j348;
+
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+/**
+ */
+@Jpf.Controller()
+public class Controller
+    extends PageFlowController {
+
+    @Jpf.Action(forwards = {
+        @Jpf.Forward(name = "index",path = "index.jsp")
+    })
+    protected Forward begin() {
+        return new Forward("index");
+    }
+}
\ No newline at end of file

Propchange: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/j348/Controller.jpf
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/j348/index.jsp
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/j348/index.jsp?view=auto&rev=155208
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/j348/index.jsp (added)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/j348/index.jsp Thu Feb 24 08:41:39 2005
@@ -0,0 +1,29 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0" prefix="netui-data"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="netui-template"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
+<netui:html>
+    <head>
+        <title>JIRA 348</title>
+    </head>
+    <netui:body>
+    <script language="JavaScript" type="text/JavaScript" src="${pageContext.request.contextPath}/resources/beehive/version1/javascript/netui-datagrid.js"></script>
+    <netui:form action="begin" tagId="filterForm">
+        <table>
+        <tr>
+            <td>Customer ID</td><td><input type="text" value="" id="customerid"/></td>
+            <td>Company Name</td><td><input type="text" value="" id="companyname"/></td>
+        </tr>
+        <tr><td colspan="2" align="left"><netui:anchor href="index.jsp" onClick="return doNetUIFilters('filterForm', 'customers');">Search</netui:anchor></td></tr>
+        </table>
+    </netui:form>
+    <script language="JavaScript">
+        doLoadNetUIFilters('filterForm', 'customers');
+    </script>
+    <br/>
+    <netui:anchor action="begin" value="Link with Param">
+        <netui:parameter name="foo" value="bar"/>
+    </netui:anchor>
+  </netui:body>
+</netui:html>

Propchange: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/datagrid/j348/index.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml?view=diff&r1=155207&r2=155208
==============================================================================
--- 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 Feb 24 08:41:39 2005
@@ -2738,6 +2738,21 @@
          </features>
       </test>
       <test>
+         <name>DataGridFilterSmoke</name>
+         <description>DataGridFilterSmoke</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>bvt.struts11</category>
+            <category>databinding</category>
+            <category>datagrid</category>
+         </categories>
+         <features>
+            <feature>Databinding</feature>
+            <feature>Data Grid</feature>
+         </features>
+      </test>
+      <test>
          <name>DataGridFooterTest</name>
          <description>DataGridFooterTest</description>
          <webapp>coreWeb</webapp>

Added: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridFilterSmoke.xml
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridFilterSmoke.xml?view=auto&rev=155208
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridFilterSmoke.xml (added)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridFilterSmoke.xml Thu Feb 24 08:41:39 2005
@@ -0,0 +1,1522 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+   <ses:sessionName>DataGridFilterSmoke</ses:sessionName>
+   <ses:tester>ekoneil</ses:tester>
+   <ses:startDate>23 Feb 2005, 05:39:33.920 PM MST</ses:startDate>
+   <ses:description>Simple smoke test of adding filter objects onto the URL.</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/databinding/datagrid/j348/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+&lt;html lang="en">
+
+    &lt;head>
+        &lt;title>JIRA 348&lt;/title>
+    &lt;/head>
+    &lt;body>
+    &lt;script language="JavaScript" type="text/JavaScript" src="/coreWeb/resources/beehive/version1/javascript/netui-datagrid.js">&lt;/script>
+    &lt;form name="filterForm" id="filterForm" action="/coreWeb/databinding/datagrid/j348/begin.do" method="post">
+        &lt;table>
+        &lt;tr>
+            &lt;td>Customer ID&lt;/td>&lt;td>&lt;input type="text" value="" id="customerid"/>&lt;/td>
+            &lt;td>Company Name&lt;/td>&lt;td>&lt;input type="text" value="" id="companyname"/>&lt;/td>
+        &lt;/tr>
+        &lt;tr>&lt;td colspan="2" align="left">&lt;a href="/coreWeb/databinding/datagrid/j348/index.jsp" onclick="return doNetUIFilters('filterForm', 'customers');">Search&lt;/a>&lt;/td>&lt;/tr>
+        &lt;/table>
+    &lt;/form>
+    &lt;script language="JavaScript">
+        doLoadNetUIFilters('filterForm', 'customers');
+    &lt;/script>
+    &lt;br/>
+    &lt;a href="/coreWeb/databinding/datagrid/j348/begin.do?foo=bar">Link with Param&lt;/a>
+  &lt;script language="JavaScript" type="text/JavaScript">
+&lt;!--
+
+// **** Start the NetUI Framework Generated JavaScript ****
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_names == null)
+   var netui_names = new Object();
+netui_names.filterForm="filterForm"
+
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_tagIdNameMap == null)
+   var netui_tagIdNameMap = new Object();
+netui_tagIdNameMap.filterForm="filterForm"
+
+
+// method which will return a real id for a tagId,
+// the tag parameter will be used to find the idScope for
+// containers that may scope their ids
+function getNetuiTagName(id, tag)
+{
+   var idScope = getScopeId(tag);
+   if (idScope == "")
+      return netui_names[id];
+   else
+      return netui_names[idScope  + "__" + id];
+}
+
+// This method will walk the hierarchy from the pass element looking for a idScope.
+// The first idScope found will be returned or the empty string if a idScope is not found.
+function getScopeId(tag)
+{
+   if (tag == null || tag.getAttribute == null)
+      return "";
+   var attrVal = tag.getAttribute("netui:idScope");
+   if (attrVal != null)
+      return attrVal;
+   return getScopeId(tag.parentNode);
+}
+
+// lookup by tagId to "real id"
+function lookupIdByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,".");
+   return (idScope == "") ? id : idScope + id;
+}
+
+// lookup by tagId to "real name"
+function lookupNameByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,"_");
+   if (idScope == "")
+      return netui_tagIdNameMap[id];
+   else
+      return netui_tagIdNameMap[idScope  + "__" + id];
+}
+
+//Non-Legacy lookup method creating a fully qualified scope id
+function lookupIdScope(tag,sep)
+{
+   var val = "";
+   if (sep == null) sep = "";
+   while (tag != null &amp;&amp; tag.getAttribute != null) {
+      var attrVal = tag.getAttribute("netui:idScope");
+      if (attrVal != null)
+         val = attrVal + sep + val;
+      tag = tag.parentNode;
+   }
+   return val;
+}
+-->
+&lt;/script>&lt;/body>
+
+&lt;/html></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>2</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/databinding/datagrid/j348/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>netui_filter</ses:name>
+                  <ses:value>customers;customerid~contains~AL</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/j348/Controller.jpf</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+&lt;html lang="en">
+
+    &lt;head>
+        &lt;title>JIRA 348&lt;/title>
+    &lt;/head>
+    &lt;body>
+    &lt;script language="JavaScript" type="text/JavaScript" src="/coreWeb/resources/beehive/version1/javascript/netui-datagrid.js">&lt;/script>
+    &lt;form name="filterForm" id="filterForm" action="/coreWeb/databinding/datagrid/j348/begin.do" method="post">
+        &lt;table>
+        &lt;tr>
+            &lt;td>Customer ID&lt;/td>&lt;td>&lt;input type="text" value="" id="customerid"/>&lt;/td>
+            &lt;td>Company Name&lt;/td>&lt;td>&lt;input type="text" value="" id="companyname"/>&lt;/td>
+        &lt;/tr>
+        &lt;tr>&lt;td colspan="2" align="left">&lt;a href="/coreWeb/databinding/datagrid/j348/index.jsp" onclick="return doNetUIFilters('filterForm', 'customers');">Search&lt;/a>&lt;/td>&lt;/tr>
+        &lt;/table>
+    &lt;/form>
+    &lt;script language="JavaScript">
+        doLoadNetUIFilters('filterForm', 'customers');
+    &lt;/script>
+    &lt;br/>
+    &lt;a href="/coreWeb/databinding/datagrid/j348/begin.do?foo=bar">Link with Param&lt;/a>
+  &lt;script language="JavaScript" type="text/JavaScript">
+&lt;!--
+
+// **** Start the NetUI Framework Generated JavaScript ****
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_names == null)
+   var netui_names = new Object();
+netui_names.filterForm="filterForm"
+
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_tagIdNameMap == null)
+   var netui_tagIdNameMap = new Object();
+netui_tagIdNameMap.filterForm="filterForm"
+
+
+// method which will return a real id for a tagId,
+// the tag parameter will be used to find the idScope for
+// containers that may scope their ids
+function getNetuiTagName(id, tag)
+{
+   var idScope = getScopeId(tag);
+   if (idScope == "")
+      return netui_names[id];
+   else
+      return netui_names[idScope  + "__" + id];
+}
+
+// This method will walk the hierarchy from the pass element looking for a idScope.
+// The first idScope found will be returned or the empty string if a idScope is not found.
+function getScopeId(tag)
+{
+   if (tag == null || tag.getAttribute == null)
+      return "";
+   var attrVal = tag.getAttribute("netui:idScope");
+   if (attrVal != null)
+      return attrVal;
+   return getScopeId(tag.parentNode);
+}
+
+// lookup by tagId to "real id"
+function lookupIdByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,".");
+   return (idScope == "") ? id : idScope + id;
+}
+
+// lookup by tagId to "real name"
+function lookupNameByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,"_");
+   if (idScope == "")
+      return netui_tagIdNameMap[id];
+   else
+      return netui_tagIdNameMap[idScope  + "__" + id];
+}
+
+//Non-Legacy lookup method creating a fully qualified scope id
+function lookupIdScope(tag,sep)
+{
+   var val = "";
+   if (sep == null) sep = "";
+   while (tag != null &amp;&amp; tag.getAttribute != null) {
+      var attrVal = tag.getAttribute("netui:idScope");
+      if (attrVal != null)
+         val = attrVal + sep + val;
+      tag = tag.parentNode;
+   }
+   return val;
+}
+-->
+&lt;/script>&lt;/body>
+
+&lt;/html></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>3</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/databinding/datagrid/j348/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>netui_filter</ses:name>
+                  <ses:value>customers;customerid~contains~AL,companyname~contains~BEA</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/j348/Controller.jpf?netui_filter=customers;customerid~contains~AL</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+&lt;html lang="en">
+
+    &lt;head>
+        &lt;title>JIRA 348&lt;/title>
+    &lt;/head>
+    &lt;body>
+    &lt;script language="JavaScript" type="text/JavaScript" src="/coreWeb/resources/beehive/version1/javascript/netui-datagrid.js">&lt;/script>
+    &lt;form name="filterForm" id="filterForm" action="/coreWeb/databinding/datagrid/j348/begin.do" method="post">
+        &lt;table>
+        &lt;tr>
+            &lt;td>Customer ID&lt;/td>&lt;td>&lt;input type="text" value="" id="customerid"/>&lt;/td>
+            &lt;td>Company Name&lt;/td>&lt;td>&lt;input type="text" value="" id="companyname"/>&lt;/td>
+        &lt;/tr>
+        &lt;tr>&lt;td colspan="2" align="left">&lt;a href="/coreWeb/databinding/datagrid/j348/index.jsp" onclick="return doNetUIFilters('filterForm', 'customers');">Search&lt;/a>&lt;/td>&lt;/tr>
+        &lt;/table>
+    &lt;/form>
+    &lt;script language="JavaScript">
+        doLoadNetUIFilters('filterForm', 'customers');
+    &lt;/script>
+    &lt;br/>
+    &lt;a href="/coreWeb/databinding/datagrid/j348/begin.do?foo=bar">Link with Param&lt;/a>
+  &lt;script language="JavaScript" type="text/JavaScript">
+&lt;!--
+
+// **** Start the NetUI Framework Generated JavaScript ****
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_names == null)
+   var netui_names = new Object();
+netui_names.filterForm="filterForm"
+
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_tagIdNameMap == null)
+   var netui_tagIdNameMap = new Object();
+netui_tagIdNameMap.filterForm="filterForm"
+
+
+// method which will return a real id for a tagId,
+// the tag parameter will be used to find the idScope for
+// containers that may scope their ids
+function getNetuiTagName(id, tag)
+{
+   var idScope = getScopeId(tag);
+   if (idScope == "")
+      return netui_names[id];
+   else
+      return netui_names[idScope  + "__" + id];
+}
+
+// This method will walk the hierarchy from the pass element looking for a idScope.
+// The first idScope found will be returned or the empty string if a idScope is not found.
+function getScopeId(tag)
+{
+   if (tag == null || tag.getAttribute == null)
+      return "";
+   var attrVal = tag.getAttribute("netui:idScope");
+   if (attrVal != null)
+      return attrVal;
+   return getScopeId(tag.parentNode);
+}
+
+// lookup by tagId to "real id"
+function lookupIdByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,".");
+   return (idScope == "") ? id : idScope + id;
+}
+
+// lookup by tagId to "real name"
+function lookupNameByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,"_");
+   if (idScope == "")
+      return netui_tagIdNameMap[id];
+   else
+      return netui_tagIdNameMap[idScope  + "__" + id];
+}
+
+//Non-Legacy lookup method creating a fully qualified scope id
+function lookupIdScope(tag,sep)
+{
+   var val = "";
+   if (sep == null) sep = "";
+   while (tag != null &amp;&amp; tag.getAttribute != null) {
+      var attrVal = tag.getAttribute("netui:idScope");
+      if (attrVal != null)
+         val = attrVal + sep + val;
+      tag = tag.parentNode;
+   }
+   return val;
+}
+-->
+&lt;/script>&lt;/body>
+
+&lt;/html></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>4</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/databinding/datagrid/j348/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>netui_filter</ses:name>
+                  <ses:value>customers;customerid~contains~AL</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/j348/Controller.jpf?netui_filter=customers;customerid~contains~AL,companyname~contains~BEA</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+&lt;html lang="en">
+
+    &lt;head>
+        &lt;title>JIRA 348&lt;/title>
+    &lt;/head>
+    &lt;body>
+    &lt;script language="JavaScript" type="text/JavaScript" src="/coreWeb/resources/beehive/version1/javascript/netui-datagrid.js">&lt;/script>
+    &lt;form name="filterForm" id="filterForm" action="/coreWeb/databinding/datagrid/j348/begin.do" method="post">
+        &lt;table>
+        &lt;tr>
+            &lt;td>Customer ID&lt;/td>&lt;td>&lt;input type="text" value="" id="customerid"/>&lt;/td>
+            &lt;td>Company Name&lt;/td>&lt;td>&lt;input type="text" value="" id="companyname"/>&lt;/td>
+        &lt;/tr>
+        &lt;tr>&lt;td colspan="2" align="left">&lt;a href="/coreWeb/databinding/datagrid/j348/index.jsp" onclick="return doNetUIFilters('filterForm', 'customers');">Search&lt;/a>&lt;/td>&lt;/tr>
+        &lt;/table>
+    &lt;/form>
+    &lt;script language="JavaScript">
+        doLoadNetUIFilters('filterForm', 'customers');
+    &lt;/script>
+    &lt;br/>
+    &lt;a href="/coreWeb/databinding/datagrid/j348/begin.do?foo=bar">Link with Param&lt;/a>
+  &lt;script language="JavaScript" type="text/JavaScript">
+&lt;!--
+
+// **** Start the NetUI Framework Generated JavaScript ****
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_names == null)
+   var netui_names = new Object();
+netui_names.filterForm="filterForm"
+
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_tagIdNameMap == null)
+   var netui_tagIdNameMap = new Object();
+netui_tagIdNameMap.filterForm="filterForm"
+
+
+// method which will return a real id for a tagId,
+// the tag parameter will be used to find the idScope for
+// containers that may scope their ids
+function getNetuiTagName(id, tag)
+{
+   var idScope = getScopeId(tag);
+   if (idScope == "")
+      return netui_names[id];
+   else
+      return netui_names[idScope  + "__" + id];
+}
+
+// This method will walk the hierarchy from the pass element looking for a idScope.
+// The first idScope found will be returned or the empty string if a idScope is not found.
+function getScopeId(tag)
+{
+   if (tag == null || tag.getAttribute == null)
+      return "";
+   var attrVal = tag.getAttribute("netui:idScope");
+   if (attrVal != null)
+      return attrVal;
+   return getScopeId(tag.parentNode);
+}
+
+// lookup by tagId to "real id"
+function lookupIdByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,".");
+   return (idScope == "") ? id : idScope + id;
+}
+
+// lookup by tagId to "real name"
+function lookupNameByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,"_");
+   if (idScope == "")
+      return netui_tagIdNameMap[id];
+   else
+      return netui_tagIdNameMap[idScope  + "__" + id];
+}
+
+//Non-Legacy lookup method creating a fully qualified scope id
+function lookupIdScope(tag,sep)
+{
+   var val = "";
+   if (sep == null) sep = "";
+   while (tag != null &amp;&amp; tag.getAttribute != null) {
+      var attrVal = tag.getAttribute("netui:idScope");
+      if (attrVal != null)
+         val = attrVal + sep + val;
+      tag = tag.parentNode;
+   }
+   return val;
+}
+-->
+&lt;/script>&lt;/body>
+
+&lt;/html></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>5</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/databinding/datagrid/j348/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/j348/Controller.jpf?netui_filter=customers;customerid~contains~AL</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+&lt;html lang="en">
+
+    &lt;head>
+        &lt;title>JIRA 348&lt;/title>
+    &lt;/head>
+    &lt;body>
+    &lt;script language="JavaScript" type="text/JavaScript" src="/coreWeb/resources/beehive/version1/javascript/netui-datagrid.js">&lt;/script>
+    &lt;form name="filterForm" id="filterForm" action="/coreWeb/databinding/datagrid/j348/begin.do" method="post">
+        &lt;table>
+        &lt;tr>
+            &lt;td>Customer ID&lt;/td>&lt;td>&lt;input type="text" value="" id="customerid"/>&lt;/td>
+            &lt;td>Company Name&lt;/td>&lt;td>&lt;input type="text" value="" id="companyname"/>&lt;/td>
+        &lt;/tr>
+        &lt;tr>&lt;td colspan="2" align="left">&lt;a href="/coreWeb/databinding/datagrid/j348/index.jsp" onclick="return doNetUIFilters('filterForm', 'customers');">Search&lt;/a>&lt;/td>&lt;/tr>
+        &lt;/table>
+    &lt;/form>
+    &lt;script language="JavaScript">
+        doLoadNetUIFilters('filterForm', 'customers');
+    &lt;/script>
+    &lt;br/>
+    &lt;a href="/coreWeb/databinding/datagrid/j348/begin.do?foo=bar">Link with Param&lt;/a>
+  &lt;script language="JavaScript" type="text/JavaScript">
+&lt;!--
+
+// **** Start the NetUI Framework Generated JavaScript ****
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_names == null)
+   var netui_names = new Object();
+netui_names.filterForm="filterForm"
+
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_tagIdNameMap == null)
+   var netui_tagIdNameMap = new Object();
+netui_tagIdNameMap.filterForm="filterForm"
+
+
+// method which will return a real id for a tagId,
+// the tag parameter will be used to find the idScope for
+// containers that may scope their ids
+function getNetuiTagName(id, tag)
+{
+   var idScope = getScopeId(tag);
+   if (idScope == "")
+      return netui_names[id];
+   else
+      return netui_names[idScope  + "__" + id];
+}
+
+// This method will walk the hierarchy from the pass element looking for a idScope.
+// The first idScope found will be returned or the empty string if a idScope is not found.
+function getScopeId(tag)
+{
+   if (tag == null || tag.getAttribute == null)
+      return "";
+   var attrVal = tag.getAttribute("netui:idScope");
+   if (attrVal != null)
+      return attrVal;
+   return getScopeId(tag.parentNode);
+}
+
+// lookup by tagId to "real id"
+function lookupIdByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,".");
+   return (idScope == "") ? id : idScope + id;
+}
+
+// lookup by tagId to "real name"
+function lookupNameByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,"_");
+   if (idScope == "")
+      return netui_tagIdNameMap[id];
+   else
+      return netui_tagIdNameMap[idScope  + "__" + id];
+}
+
+//Non-Legacy lookup method creating a fully qualified scope id
+function lookupIdScope(tag,sep)
+{
+   var val = "";
+   if (sep == null) sep = "";
+   while (tag != null &amp;&amp; tag.getAttribute != null) {
+      var attrVal = tag.getAttribute("netui:idScope");
+      if (attrVal != null)
+         val = attrVal + sep + val;
+      tag = tag.parentNode;
+   }
+   return val;
+}
+-->
+&lt;/script>&lt;/body>
+
+&lt;/html></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>6</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/databinding/datagrid/j348/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>netui_filter</ses:name>
+                  <ses:value>customers;customerid~contains~AL</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/j348/Controller.jpf?</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+&lt;html lang="en">
+
+    &lt;head>
+        &lt;title>JIRA 348&lt;/title>
+    &lt;/head>
+    &lt;body>
+    &lt;script language="JavaScript" type="text/JavaScript" src="/coreWeb/resources/beehive/version1/javascript/netui-datagrid.js">&lt;/script>
+    &lt;form name="filterForm" id="filterForm" action="/coreWeb/databinding/datagrid/j348/begin.do" method="post">
+        &lt;table>
+        &lt;tr>
+            &lt;td>Customer ID&lt;/td>&lt;td>&lt;input type="text" value="" id="customerid"/>&lt;/td>
+            &lt;td>Company Name&lt;/td>&lt;td>&lt;input type="text" value="" id="companyname"/>&lt;/td>
+        &lt;/tr>
+        &lt;tr>&lt;td colspan="2" align="left">&lt;a href="/coreWeb/databinding/datagrid/j348/index.jsp" onclick="return doNetUIFilters('filterForm', 'customers');">Search&lt;/a>&lt;/td>&lt;/tr>
+        &lt;/table>
+    &lt;/form>
+    &lt;script language="JavaScript">
+        doLoadNetUIFilters('filterForm', 'customers');
+    &lt;/script>
+    &lt;br/>
+    &lt;a href="/coreWeb/databinding/datagrid/j348/begin.do?foo=bar">Link with Param&lt;/a>
+  &lt;script language="JavaScript" type="text/JavaScript">
+&lt;!--
+
+// **** Start the NetUI Framework Generated JavaScript ****
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_names == null)
+   var netui_names = new Object();
+netui_names.filterForm="filterForm"
+
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_tagIdNameMap == null)
+   var netui_tagIdNameMap = new Object();
+netui_tagIdNameMap.filterForm="filterForm"
+
+
+// method which will return a real id for a tagId,
+// the tag parameter will be used to find the idScope for
+// containers that may scope their ids
+function getNetuiTagName(id, tag)
+{
+   var idScope = getScopeId(tag);
+   if (idScope == "")
+      return netui_names[id];
+   else
+      return netui_names[idScope  + "__" + id];
+}
+
+// This method will walk the hierarchy from the pass element looking for a idScope.
+// The first idScope found will be returned or the empty string if a idScope is not found.
+function getScopeId(tag)
+{
+   if (tag == null || tag.getAttribute == null)
+      return "";
+   var attrVal = tag.getAttribute("netui:idScope");
+   if (attrVal != null)
+      return attrVal;
+   return getScopeId(tag.parentNode);
+}
+
+// lookup by tagId to "real id"
+function lookupIdByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,".");
+   return (idScope == "") ? id : idScope + id;
+}
+
+// lookup by tagId to "real name"
+function lookupNameByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,"_");
+   if (idScope == "")
+      return netui_tagIdNameMap[id];
+   else
+      return netui_tagIdNameMap[idScope  + "__" + id];
+}
+
+//Non-Legacy lookup method creating a fully qualified scope id
+function lookupIdScope(tag,sep)
+{
+   var val = "";
+   if (sep == null) sep = "";
+   while (tag != null &amp;&amp; tag.getAttribute != null) {
+      var attrVal = tag.getAttribute("netui:idScope");
+      if (attrVal != null)
+         val = attrVal + sep + val;
+      tag = tag.parentNode;
+   }
+   return val;
+}
+-->
+&lt;/script>&lt;/body>
+
+&lt;/html></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>7</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/databinding/datagrid/j348/begin.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>foo</ses:name>
+                  <ses:value>bar</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/j348/Controller.jpf?netui_filter=customers;customerid~contains~AL</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+&lt;html lang="en">
+
+    &lt;head>
+        &lt;title>JIRA 348&lt;/title>
+    &lt;/head>
+    &lt;body>
+    &lt;script language="JavaScript" type="text/JavaScript" src="/coreWeb/resources/beehive/version1/javascript/netui-datagrid.js">&lt;/script>
+    &lt;form name="filterForm" id="filterForm" action="/coreWeb/databinding/datagrid/j348/begin.do" method="post">
+        &lt;table>
+        &lt;tr>
+            &lt;td>Customer ID&lt;/td>&lt;td>&lt;input type="text" value="" id="customerid"/>&lt;/td>
+            &lt;td>Company Name&lt;/td>&lt;td>&lt;input type="text" value="" id="companyname"/>&lt;/td>
+        &lt;/tr>
+        &lt;tr>&lt;td colspan="2" align="left">&lt;a href="/coreWeb/databinding/datagrid/j348/index.jsp" onclick="return doNetUIFilters('filterForm', 'customers');">Search&lt;/a>&lt;/td>&lt;/tr>
+        &lt;/table>
+    &lt;/form>
+    &lt;script language="JavaScript">
+        doLoadNetUIFilters('filterForm', 'customers');
+    &lt;/script>
+    &lt;br/>
+    &lt;a href="/coreWeb/databinding/datagrid/j348/begin.do?foo=bar">Link with Param&lt;/a>
+  &lt;script language="JavaScript" type="text/JavaScript">
+&lt;!--
+
+// **** Start the NetUI Framework Generated JavaScript ****
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_names == null)
+   var netui_names = new Object();
+netui_names.filterForm="filterForm"
+
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_tagIdNameMap == null)
+   var netui_tagIdNameMap = new Object();
+netui_tagIdNameMap.filterForm="filterForm"
+
+
+// method which will return a real id for a tagId,
+// the tag parameter will be used to find the idScope for
+// containers that may scope their ids
+function getNetuiTagName(id, tag)
+{
+   var idScope = getScopeId(tag);
+   if (idScope == "")
+      return netui_names[id];
+   else
+      return netui_names[idScope  + "__" + id];
+}
+
+// This method will walk the hierarchy from the pass element looking for a idScope.
+// The first idScope found will be returned or the empty string if a idScope is not found.
+function getScopeId(tag)
+{
+   if (tag == null || tag.getAttribute == null)
+      return "";
+   var attrVal = tag.getAttribute("netui:idScope");
+   if (attrVal != null)
+      return attrVal;
+   return getScopeId(tag.parentNode);
+}
+
+// lookup by tagId to "real id"
+function lookupIdByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,".");
+   return (idScope == "") ? id : idScope + id;
+}
+
+// lookup by tagId to "real name"
+function lookupNameByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,"_");
+   if (idScope == "")
+      return netui_tagIdNameMap[id];
+   else
+      return netui_tagIdNameMap[idScope  + "__" + id];
+}
+
+//Non-Legacy lookup method creating a fully qualified scope id
+function lookupIdScope(tag,sep)
+{
+   var val = "";
+   if (sep == null) sep = "";
+   while (tag != null &amp;&amp; tag.getAttribute != null) {
+      var attrVal = tag.getAttribute("netui:idScope");
+      if (attrVal != null)
+         val = attrVal + sep + val;
+      tag = tag.parentNode;
+   }
+   return val;
+}
+-->
+&lt;/script>&lt;/body>
+
+&lt;/html></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>8</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/databinding/datagrid/j348/begin.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>foo</ses:name>
+                  <ses:value>bar</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>netui_filter</ses:name>
+                  <ses:value>customers;customerid~contains~AL</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/j348/begin.do?foo=bar</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+&lt;html lang="en">
+
+    &lt;head>
+        &lt;title>JIRA 348&lt;/title>
+    &lt;/head>
+    &lt;body>
+    &lt;script language="JavaScript" type="text/JavaScript" src="/coreWeb/resources/beehive/version1/javascript/netui-datagrid.js">&lt;/script>
+    &lt;form name="filterForm" id="filterForm" action="/coreWeb/databinding/datagrid/j348/begin.do" method="post">
+        &lt;table>
+        &lt;tr>
+            &lt;td>Customer ID&lt;/td>&lt;td>&lt;input type="text" value="" id="customerid"/>&lt;/td>
+            &lt;td>Company Name&lt;/td>&lt;td>&lt;input type="text" value="" id="companyname"/>&lt;/td>
+        &lt;/tr>
+        &lt;tr>&lt;td colspan="2" align="left">&lt;a href="/coreWeb/databinding/datagrid/j348/index.jsp" onclick="return doNetUIFilters('filterForm', 'customers');">Search&lt;/a>&lt;/td>&lt;/tr>
+        &lt;/table>
+    &lt;/form>
+    &lt;script language="JavaScript">
+        doLoadNetUIFilters('filterForm', 'customers');
+    &lt;/script>
+    &lt;br/>
+    &lt;a href="/coreWeb/databinding/datagrid/j348/begin.do?foo=bar">Link with Param&lt;/a>
+  &lt;script language="JavaScript" type="text/JavaScript">
+&lt;!--
+
+// **** Start the NetUI Framework Generated JavaScript ****
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_names == null)
+   var netui_names = new Object();
+netui_names.filterForm="filterForm"
+
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_tagIdNameMap == null)
+   var netui_tagIdNameMap = new Object();
+netui_tagIdNameMap.filterForm="filterForm"
+
+
+// method which will return a real id for a tagId,
+// the tag parameter will be used to find the idScope for
+// containers that may scope their ids
+function getNetuiTagName(id, tag)
+{
+   var idScope = getScopeId(tag);
+   if (idScope == "")
+      return netui_names[id];
+   else
+      return netui_names[idScope  + "__" + id];
+}
+
+// This method will walk the hierarchy from the pass element looking for a idScope.
+// The first idScope found will be returned or the empty string if a idScope is not found.
+function getScopeId(tag)
+{
+   if (tag == null || tag.getAttribute == null)
+      return "";
+   var attrVal = tag.getAttribute("netui:idScope");
+   if (attrVal != null)
+      return attrVal;
+   return getScopeId(tag.parentNode);
+}
+
+// lookup by tagId to "real id"
+function lookupIdByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,".");
+   return (idScope == "") ? id : idScope + id;
+}
+
+// lookup by tagId to "real name"
+function lookupNameByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,"_");
+   if (idScope == "")
+      return netui_tagIdNameMap[id];
+   else
+      return netui_tagIdNameMap[idScope  + "__" + id];
+}
+
+//Non-Legacy lookup method creating a fully qualified scope id
+function lookupIdScope(tag,sep)
+{
+   var val = "";
+   if (sep == null) sep = "";
+   while (tag != null &amp;&amp; tag.getAttribute != null) {
+      var attrVal = tag.getAttribute("netui:idScope");
+      if (attrVal != null)
+         val = attrVal + sep + val;
+      tag = tag.parentNode;
+   }
+   return val;
+}
+-->
+&lt;/script>&lt;/body>
+
+&lt;/html></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>9</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/databinding/datagrid/j348/begin.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>foo</ses:name>
+                  <ses:value>bar</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=19EF1699195CB2A880A0080C193F92AB</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/databinding/datagrid/j348/begin.do?foo=bar&amp;netui_filter=customers;customerid~contains~AL</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+&lt;html lang="en">
+
+    &lt;head>
+        &lt;title>JIRA 348&lt;/title>
+    &lt;/head>
+    &lt;body>
+    &lt;script language="JavaScript" type="text/JavaScript" src="/coreWeb/resources/beehive/version1/javascript/netui-datagrid.js">&lt;/script>
+    &lt;form name="filterForm" id="filterForm" action="/coreWeb/databinding/datagrid/j348/begin.do" method="post">
+        &lt;table>
+        &lt;tr>
+            &lt;td>Customer ID&lt;/td>&lt;td>&lt;input type="text" value="" id="customerid"/>&lt;/td>
+            &lt;td>Company Name&lt;/td>&lt;td>&lt;input type="text" value="" id="companyname"/>&lt;/td>
+        &lt;/tr>
+        &lt;tr>&lt;td colspan="2" align="left">&lt;a href="/coreWeb/databinding/datagrid/j348/index.jsp" onclick="return doNetUIFilters('filterForm', 'customers');">Search&lt;/a>&lt;/td>&lt;/tr>
+        &lt;/table>
+    &lt;/form>
+    &lt;script language="JavaScript">
+        doLoadNetUIFilters('filterForm', 'customers');
+    &lt;/script>
+    &lt;br/>
+    &lt;a href="/coreWeb/databinding/datagrid/j348/begin.do?foo=bar">Link with Param&lt;/a>
+  &lt;script language="JavaScript" type="text/JavaScript">
+&lt;!--
+
+// **** Start the NetUI Framework Generated JavaScript ****
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_names == null)
+   var netui_names = new Object();
+netui_names.filterForm="filterForm"
+
+
+// Build the netui_names table to map the tagId attributes
+// to the real id written into the HTML
+if (netui_tagIdNameMap == null)
+   var netui_tagIdNameMap = new Object();
+netui_tagIdNameMap.filterForm="filterForm"
+
+
+// method which will return a real id for a tagId,
+// the tag parameter will be used to find the idScope for
+// containers that may scope their ids
+function getNetuiTagName(id, tag)
+{
+   var idScope = getScopeId(tag);
+   if (idScope == "")
+      return netui_names[id];
+   else
+      return netui_names[idScope  + "__" + id];
+}
+
+// This method will walk the hierarchy from the pass element looking for a idScope.
+// The first idScope found will be returned or the empty string if a idScope is not found.
+function getScopeId(tag)
+{
+   if (tag == null || tag.getAttribute == null)
+      return "";
+   var attrVal = tag.getAttribute("netui:idScope");
+   if (attrVal != null)
+      return attrVal;
+   return getScopeId(tag.parentNode);
+}
+
+// lookup by tagId to "real id"
+function lookupIdByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,".");
+   return (idScope == "") ? id : idScope + id;
+}
+
+// lookup by tagId to "real name"
+function lookupNameByTagId(id, tag)
+{
+   var idScope = lookupIdScope(tag,"_");
+   if (idScope == "")
+      return netui_tagIdNameMap[id];
+   else
+      return netui_tagIdNameMap[idScope  + "__" + id];
+}
+
+//Non-Legacy lookup method creating a fully qualified scope id
+function lookupIdScope(tag,sep)
+{
+   var val = "";
+   if (sep == null) sep = "";
+   while (tag != null &amp;&amp; tag.getAttribute != null) {
+      var attrVal = tag.getAttribute("netui:idScope");
+      if (attrVal != null)
+         val = attrVal + sep + val;
+      tag = tag.parentNode;
+   }
+   return val;
+}
+-->
+&lt;/script>&lt;/body>
+
+&lt;/html></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>23 Feb 2005, 05:40:15.409 PM MST</ses:endDate>
+   <ses:testCount>9</ses:testCount>
+</ses:recorderSession>
\ No newline at end of file