You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mm...@apache.org on 2006/09/11 10:31:54 UTC

svn commit: r442124 - in /myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html: HtmlLinkRendererBase.java HtmlRendererUtils.java util/JavascriptUtils.java

Author: mmarinschek
Date: Mon Sep 11 01:31:53 2006
New Revision: 442124

URL: http://svn.apache.org/viewvc?view=rev&rev=442124
Log:
more revamping of MyFaces JavaScript - submitForm method is now independent of form

Modified:
    myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
    myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
    myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java

Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java?view=diff&rev=442124&r1=442123&r2=442124
==============================================================================
--- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java (original)
+++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java Mon Sep 11 01:31:53 2006
@@ -35,6 +35,7 @@
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.util.Iterator;
+import java.util.Map;
 
 /**
  * @author Manfred Geiler
@@ -44,6 +45,7 @@
     extends HtmlRenderer {
     public static final String URL_STATE_MARKER = "JSF_URL_STATE_MARKER=DUMMY";
     public static final int URL_STATE_MARKER_LEN = URL_STATE_MARKER.length();
+    private static final String FIRST_LINK_ON_PAGE = "org.apache.MyFaces.FIRST_LINK_ON_PAGE";
 
     //private static final Log log = LogFactory.getLog(HtmlLinkRenderer.class);
 
@@ -214,17 +216,24 @@
         }
         else
         {
-            renderFormSubmitScriptIfNecessary(facesContext, formInfo);
+            renderFormSubmitScriptIfNecessary(facesContext);
 
             StringBuffer params = addChildParameters(component, nestingForm);
 
             String target = getTarget(component);
 
-            onClick.append("return myFaces_submitForm_").append(JavascriptUtils.getValidJavascriptName(formName,false)).append("('").
-                    append(clientId).append("',").
+            onClick.append("return ").
+                    append(HtmlRendererUtils.SUBMIT_FORM_FN_NAME).append("('").
+                    append(formName).append("','").
+                    append(clientId).append("'");
+
+            if(params.length()>2 || target != null)
+            {
+                onClick.append(",").
                     append(params).append(",").
-                    append(target == null ? "null" : ("'" + target + "'")).
-                    append(");");
+                    append(target == null ? "null" : ("'" + target + "'"));
+            }
+            onClick.append(");");
 
             //add id parameter for decode to form - todo: better do that dynamically instead of referring to the form
             String hiddenFieldName = HtmlRendererUtils.getHiddenCommandLinkFieldName(formInfo);
@@ -236,19 +245,18 @@
         writer.writeAttribute(HTML.ONCLICK_ATTR, onClick.toString(), null);
     }
 
-    private static void renderFormSubmitScriptIfNecessary(FacesContext facesContext, FormInfo formInfo)
+    private static void renderFormSubmitScriptIfNecessary(FacesContext facesContext)
         throws IOException {
 
-        if (facesContext.getExternalContext().getRequestMap().get(getFormSubmitScriptName(formInfo)) == null)
+        Map map = facesContext.getExternalContext().getRequestMap();
+        Boolean firstLink = (Boolean) map.get(FIRST_LINK_ON_PAGE);
+
+        if(firstLink == null || firstLink.equals(Boolean.TRUE))
         {
-            HtmlRendererUtils.renderFormSubmitScript(facesContext, formInfo);
-            facesContext.getExternalContext().getRequestMap().put(getFormSubmitScriptName(formInfo), Boolean.TRUE);
-        }
-    }
+            map.put(FIRST_LINK_ON_PAGE,Boolean.FALSE);
+            HtmlRendererUtils.renderFormSubmitScript(facesContext);
 
-    private static String getFormSubmitScriptName(FormInfo formInfo)
-    {
-        return "FORM_SUBMIT_SCRIPT_FOR_"+formInfo.getFormName();
+        }
     }
 
     private String getTarget(UIComponent component)

Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java?view=diff&rev=442124&r1=442123&r2=442124
==============================================================================
--- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java (original)
+++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java Mon Sep 11 01:31:53 2006
@@ -53,6 +53,8 @@
 
     public static final String CLEAR_HIDDEN_FIELD_FN_NAME =
         "clearFormHiddenParams";
+    private static final String SET_HIDDEN_INPUT_FN_NAME = "oamSetHiddenInput";
+    public static final String SUBMIT_FORM_FN_NAME = "oamSubmitForm";
 
     private HtmlRendererUtils() {
         // utility class, do not instantiate
@@ -802,17 +804,32 @@
 
     public static void appendClearHiddenCommandFormParamsFunctionCall(ScriptContext context, String formName) {
 
-        context.prettyLine();
-        context.append("if(window.");
-        context.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName));
-        context.append("!=undefined)");
-        context.append("{");
-        context.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName)).append("('").append(formName).append("');");
-        context.append("}");
+        if(formName == null)
+        {
+            context.prettyLine();
+            context.append("var clearFn = ");
+            context.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName));
+            context.append(";");
+            context.prettyLine();
+            context.append("if(eval('window.'+clearFn)!=undefined)");
+            context.append("{");
+            context.append("eval('window.'+clearFn+'(formName)');");
+            context.append("}");
+        }
+        else
+        {
+            context.prettyLine();
+            context.append("if(window.");
+            context.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName));
+            context.append("!=undefined)");
+            context.append("{");
+            context.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName)).append("('").append(formName).append("');");
+            context.append("}");
+        }
     }
 
 
-    public static void renderFormSubmitScript(FacesContext facesContext, FormInfo formInfo)
+    public static void renderFormSubmitScript(FacesContext facesContext)
             throws IOException
     {
         ResponseWriter writer = facesContext.getResponseWriter();
@@ -827,77 +844,92 @@
         context.prettyLine();
         context.increaseIndent();
 
-        prepareScript(context, formInfo, autoScroll);
+        prepareScript(context, autoScroll);
 
         writer.writeText(context.toString(),null);
 
         writer.endElement(HTML.SCRIPT_ELEM);
     }
 
-    private static void prepareScript(ScriptContext context, FormInfo formInfo, boolean autoScroll)
+    private static void prepareScript(ScriptContext context, boolean autoScroll)
     {
-        String formName = formInfo.getFormName();
 
-        context.append("function myFaces_submitForm_").append(
-                JavascriptUtils.getValidJavascriptName(formName,false)).append("(linkId, target, params)");
+        context.prettyLine();
+
+        context.append("function ");
+        context.append(SET_HIDDEN_INPUT_FN_NAME).append("(formname, name, value)");
+        context.append("{");
+        context.append("var form = document.forms[formname];");
+        context.prettyLine();
+        context.append("if(form.elements[name]==undefined)");
+        context.append("{");
+        context.append("var newInput = document.createElement['input'];");
+        context.prettyLine();
+        context.append("newInput.setAttribute('type','hidden');");
+        context.prettyLine();
+        context.append("newInput.setAttribute('name',name);");
+        context.prettyLine();
+        context.append("newInput.setAttribute('value',value);");
+        context.prettyLine();
+        context.append("form.appendChild(newInput);");
+        context.append("}");
+        context.append("else");
+        context.append("{");
+        context.append("form.elements[name].value=value;");
+        context.append("}");
+
+        context.append("}");
+
+        context.prettyLine();
+
+        context.append("function ");
+        context.append(SUBMIT_FORM_FN_NAME).append("(formName, linkId, target, params)");
         context.append("{");
 
         //call the script to clear the form (clearFormHiddenParams_<formName>) method
-        HtmlRendererUtils.appendClearHiddenCommandFormParamsFunctionCall(context, formName);
+        HtmlRendererUtils.appendClearHiddenCommandFormParamsFunctionCall(context, null);
 
         if (autoScroll)
         {
-            JavascriptUtils.appendAutoScrollAssignment(context, formName);
+            JavascriptUtils.appendAutoScrollAssignment(context, null);
         }
 
         context.prettyLine();
 
         context.append("if(target!=undefined && target != null)");
         context.append("{");
-        context.append("document.forms['"+formName+"'].target=target;");
+        context.append("document.forms[formName].target=target;");
         context.append("}");
 
         context.append("if(params!=undefined && params != null)");
         context.append("{");
         context.append("for(var i=0; i<params.length; i++)");
         context.append("{");
-        context.append("if(document.forms['").append(formName).append("'].elements[params[i][0]]==undefined)");
-        context.append("{");
-        context.append("var form = document.forms['"+formName+"'];");
-        context.prettyLine();
-        context.append("var newInput = document.createElement['input'];");
-        context.prettyLine();
-        context.append("newInput.setAttribute('type','hidden');");
-        context.prettyLine();
-        context.append("newInput.setAttribute('name',params[i][0]);");
-        context.prettyLine();
-        context.append("newInput.setAttribute('value',params[i][1]);");
-        context.prettyLine();
-        context.append("form.appendChild(newInput);");
-        context.append("}");
+        context.append(SET_HIDDEN_INPUT_FN_NAME).append("(formName,params[i][0], params[i][1]);");
         context.append("}");
         context.append("}");
 
         context.prettyLine();
 
-        context.append("document.forms['"+formName+"'].elements['"+
-                HtmlRendererUtils.getHiddenCommandLinkFieldName(formInfo)+"'].value=linkId;");
+        context.append(SET_HIDDEN_INPUT_FN_NAME);
+        context.append("(formName,formName +'"+NamingContainer.SEPARATOR_CHAR+
+                "'+'"+HtmlRendererUtils.HIDDEN_COMMANDLINK_FIELD_NAME+"',linkId);");
 
         context.prettyLine();
         context.prettyLine();
 
-        context.append("if(document.forms['"+formName+"'].onsubmit)");
+        context.append("if(document.forms[formName].onsubmit)");
         context.append("{");
-        context.append("var result=document.forms['"+formName+"'].onsubmit();");
+        context.append("var result=document.forms[formName].onsubmit();");
         context.prettyLine();
         context.append("if( (typeof result == 'undefined') || result )");
         context.append("{");
-        context.append("document.forms['"+formName+"'].submit();");
+        context.append("document.forms[formName].submit();");
         context.append("}");
         context.append("}");
         context.append("else ");
         context.append("{");
-        context.append("document.forms['"+formName+"'].submit();");
+        context.append("document.forms[formName].submit();");
         context.append("}");
         //return false, so that browser does not handle the click
         context.append("return false;");
@@ -1075,10 +1107,18 @@
      */
     public static String getClearHiddenCommandFormParamsFunctionName(
         String formName) {
-        return JavascriptUtils.getValidJavascriptNameAsInRI(CLEAR_HIDDEN_FIELD_FN_NAME
-            + "_"
-            + formName
-            .replace(NamingContainer.SEPARATOR_CHAR, '_'));
+        if(formName == null)
+        {
+            return "'" +CLEAR_HIDDEN_FIELD_FN_NAME
+                + "_'+formName.replace('"+NamingContainer.SEPARATOR_CHAR+"','_')";
+        }
+         else
+        {
+            return JavascriptUtils.getValidJavascriptNameAsInRI(CLEAR_HIDDEN_FIELD_FN_NAME
+                + "_"
+                + formName
+                .replace(NamingContainer.SEPARATOR_CHAR, '_'));
+        }
     }
 
     /**

Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java?view=diff&rev=442124&r1=442123&r2=442124
==============================================================================
--- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java (original)
+++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java Mon Sep 11 01:31:53 2006
@@ -285,13 +285,26 @@
 
     public static void appendAutoScrollAssignment(HtmlRendererUtils.ScriptContext scriptContext, String formName)
     {
-        scriptContext.prettyLine();
-        scriptContext.append("if(window."+AUTO_SCROLL_FUNCTION+"!=undefined)");
-        scriptContext.append("{");
-        scriptContext.append("document.forms['").append(formName).append("']");
-        scriptContext.append(".elements['").append(AUTO_SCROLL_PARAM).append("']");
-        scriptContext.append(".value=").append(AUTO_SCROLL_FUNCTION).append("();");
-        scriptContext.append("}");
+        if(formName == null)
+        {
+            scriptContext.prettyLine();
+            scriptContext.append("if(window."+AUTO_SCROLL_FUNCTION+"!=undefined)");
+            scriptContext.append("{");
+            scriptContext.append("document.forms[formName]");
+            scriptContext.append(".elements['").append(AUTO_SCROLL_PARAM).append("']");
+            scriptContext.append(".value=").append(AUTO_SCROLL_FUNCTION).append("();");
+            scriptContext.append("}");
+        }
+        else
+        {
+            scriptContext.prettyLine();
+            scriptContext.append("if(window."+AUTO_SCROLL_FUNCTION+"!=undefined)");
+            scriptContext.append("{");
+            scriptContext.append("document.forms['").append(formName).append("']");
+            scriptContext.append(".elements['").append(AUTO_SCROLL_PARAM).append("']");
+            scriptContext.append(".value=").append(AUTO_SCROLL_FUNCTION).append("();");
+            scriptContext.append("}");
+        }
     }
 
     /**



Re: svn commit: r442124 - in /myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html: HtmlLinkRendererBase.java HtmlRendererUtils.java util/JavascriptUtils.java

Posted by Martin Marinschek <ma...@gmail.com>.
Hi Wendy,

this would be:

http://issues.apache.org/jira/browse/MYFACES-1032

I've just added it.

regards,

Martin

On 9/11/06, Wendy Smoak <ws...@gmail.com> wrote:
> On 9/11/06, Martin Marinschek <ma...@gmail.com> wrote:
>
> > > URL: http://svn.apache.org/viewvc?view=rev&rev=442124
> > > Log:
> > > more revamping of MyFaces JavaScript - submitForm method is now independent of form
>
> > yes, I know - I did that for all my commits yesterday night, and this
> > last one just did some cleanup for the ones before. I should have
> > mentioned the jira-issue I created for the ones before in the commit
> > message for this one as well, though.
>
> Thanks. :)  Which issue did this belong to, then?  We can just add a
> comment with the revision log URL.
>
> --
> Wendy
>


-- 

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces

Re: svn commit: r442124 - in /myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html: HtmlLinkRendererBase.java HtmlRendererUtils.java util/JavascriptUtils.java

Posted by Wendy Smoak <ws...@gmail.com>.
On 9/11/06, Martin Marinschek <ma...@gmail.com> wrote:

> > URL: http://svn.apache.org/viewvc?view=rev&rev=442124
> > Log:
> > more revamping of MyFaces JavaScript - submitForm method is now independent of form

> yes, I know - I did that for all my commits yesterday night, and this
> last one just did some cleanup for the ones before. I should have
> mentioned the jira-issue I created for the ones before in the commit
> message for this one as well, though.

Thanks. :)  Which issue did this belong to, then?  We can just add a
comment with the revision log URL.

-- 
Wendy

Re: svn commit: r442124 - in /myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html: HtmlLinkRendererBase.java HtmlRendererUtils.java util/JavascriptUtils.java

Posted by Martin Marinschek <ma...@gmail.com>.
Hi Mike,

yes, I know - I did that for all my commits yesterday night, and this
last one just did some cleanup for the ones before. I should have
mentioned the jira-issue I created for the ones before in the commit
message for this one as well, though.

regards,

Martin

On 9/11/06, Mike Kienenberger <mk...@gmail.com> wrote:
> Hey Martin,
>
> We all kinda unofficially agreed while you were on vacation that we
> need open JIRA issues for any non-trivial changes to core or tomahawk
> :-)  Thus, we can create changelogs and release notes.
>
>
>
> On 9/11/06, mmarinschek@apache.org <mm...@apache.org> wrote:
> > Author: mmarinschek
> > Date: Mon Sep 11 01:31:53 2006
> > New Revision: 442124
> >
> > URL: http://svn.apache.org/viewvc?view=rev&rev=442124
> > Log:
> > more revamping of MyFaces JavaScript - submitForm method is now independent of form
> >
> > Modified:
> >     myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
> >     myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
> >     myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java
> >
> > Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
> > URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java?view=diff&rev=442124&r1=442123&r2=442124
> > ==============================================================================
> > --- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java (original)
> > +++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java Mon Sep 11 01:31:53 2006
> > @@ -35,6 +35,7 @@
> >  import java.io.UnsupportedEncodingException;
> >  import java.net.URLEncoder;
> >  import java.util.Iterator;
> > +import java.util.Map;
> >
> >  /**
> >   * @author Manfred Geiler
> > @@ -44,6 +45,7 @@
> >      extends HtmlRenderer {
> >      public static final String URL_STATE_MARKER = "JSF_URL_STATE_MARKER=DUMMY";
> >      public static final int URL_STATE_MARKER_LEN = URL_STATE_MARKER.length();
> > +    private static final String FIRST_LINK_ON_PAGE = "org.apache.MyFaces.FIRST_LINK_ON_PAGE";
> >
> >      //private static final Log log = LogFactory.getLog(HtmlLinkRenderer.class);
> >
> > @@ -214,17 +216,24 @@
> >          }
> >          else
> >          {
> > -            renderFormSubmitScriptIfNecessary(facesContext, formInfo);
> > +            renderFormSubmitScriptIfNecessary(facesContext);
> >
> >              StringBuffer params = addChildParameters(component, nestingForm);
> >
> >              String target = getTarget(component);
> >
> > -            onClick.append("return myFaces_submitForm_").append(JavascriptUtils.getValidJavascriptName(formName,false)).append("('").
> > -                    append(clientId).append("',").
> > +            onClick.append("return ").
> > +                    append(HtmlRendererUtils.SUBMIT_FORM_FN_NAME).append("('").
> > +                    append(formName).append("','").
> > +                    append(clientId).append("'");
> > +
> > +            if(params.length()>2 || target != null)
> > +            {
> > +                onClick.append(",").
> >                      append(params).append(",").
> > -                    append(target == null ? "null" : ("'" + target + "'")).
> > -                    append(");");
> > +                    append(target == null ? "null" : ("'" + target + "'"));
> > +            }
> > +            onClick.append(");");
> >
> >              //add id parameter for decode to form - todo: better do that dynamically instead of referring to the form
> >              String hiddenFieldName = HtmlRendererUtils.getHiddenCommandLinkFieldName(formInfo);
> > @@ -236,19 +245,18 @@
> >          writer.writeAttribute(HTML.ONCLICK_ATTR, onClick.toString(), null);
> >      }
> >
> > -    private static void renderFormSubmitScriptIfNecessary(FacesContext facesContext, FormInfo formInfo)
> > +    private static void renderFormSubmitScriptIfNecessary(FacesContext facesContext)
> >          throws IOException {
> >
> > -        if (facesContext.getExternalContext().getRequestMap().get(getFormSubmitScriptName(formInfo)) == null)
> > +        Map map = facesContext.getExternalContext().getRequestMap();
> > +        Boolean firstLink = (Boolean) map.get(FIRST_LINK_ON_PAGE);
> > +
> > +        if(firstLink == null || firstLink.equals(Boolean.TRUE))
> >          {
> > -            HtmlRendererUtils.renderFormSubmitScript(facesContext, formInfo);
> > -            facesContext.getExternalContext().getRequestMap().put(getFormSubmitScriptName(formInfo), Boolean.TRUE);
> > -        }
> > -    }
> > +            map.put(FIRST_LINK_ON_PAGE,Boolean.FALSE);
> > +            HtmlRendererUtils.renderFormSubmitScript(facesContext);
> >
> > -    private static String getFormSubmitScriptName(FormInfo formInfo)
> > -    {
> > -        return "FORM_SUBMIT_SCRIPT_FOR_"+formInfo.getFormName();
> > +        }
> >      }
> >
> >      private String getTarget(UIComponent component)
> >
> > Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
> > URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java?view=diff&rev=442124&r1=442123&r2=442124
> > ==============================================================================
> > --- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java (original)
> > +++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java Mon Sep 11 01:31:53 2006
> > @@ -53,6 +53,8 @@
> >
> >      public static final String CLEAR_HIDDEN_FIELD_FN_NAME =
> >          "clearFormHiddenParams";
> > +    private static final String SET_HIDDEN_INPUT_FN_NAME = "oamSetHiddenInput";
> > +    public static final String SUBMIT_FORM_FN_NAME = "oamSubmitForm";
> >
> >      private HtmlRendererUtils() {
> >          // utility class, do not instantiate
> > @@ -802,17 +804,32 @@
> >
> >      public static void appendClearHiddenCommandFormParamsFunctionCall(ScriptContext context, String formName) {
> >
> > -        context.prettyLine();
> > -        context.append("if(window.");
> > -        context.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName));
> > -        context.append("!=undefined)");
> > -        context.append("{");
> > -        context.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName)).append("('").append(formName).append("');");
> > -        context.append("}");
> > +        if(formName == null)
> > +        {
> > +            context.prettyLine();
> > +            context.append("var clearFn = ");
> > +            context.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName));
> > +            context.append(";");
> > +            context.prettyLine();
> > +            context.append("if(eval('window.'+clearFn)!=undefined)");
> > +            context.append("{");
> > +            context.append("eval('window.'+clearFn+'(formName)');");
> > +            context.append("}");
> > +        }
> > +        else
> > +        {
> > +            context.prettyLine();
> > +            context.append("if(window.");
> > +            context.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName));
> > +            context.append("!=undefined)");
> > +            context.append("{");
> > +            context.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName)).append("('").append(formName).append("');");
> > +            context.append("}");
> > +        }
> >      }
> >
> >
> > -    public static void renderFormSubmitScript(FacesContext facesContext, FormInfo formInfo)
> > +    public static void renderFormSubmitScript(FacesContext facesContext)
> >              throws IOException
> >      {
> >          ResponseWriter writer = facesContext.getResponseWriter();
> > @@ -827,77 +844,92 @@
> >          context.prettyLine();
> >          context.increaseIndent();
> >
> > -        prepareScript(context, formInfo, autoScroll);
> > +        prepareScript(context, autoScroll);
> >
> >          writer.writeText(context.toString(),null);
> >
> >          writer.endElement(HTML.SCRIPT_ELEM);
> >      }
> >
> > -    private static void prepareScript(ScriptContext context, FormInfo formInfo, boolean autoScroll)
> > +    private static void prepareScript(ScriptContext context, boolean autoScroll)
> >      {
> > -        String formName = formInfo.getFormName();
> >
> > -        context.append("function myFaces_submitForm_").append(
> > -                JavascriptUtils.getValidJavascriptName(formName,false)).append("(linkId, target, params)");
> > +        context.prettyLine();
> > +
> > +        context.append("function ");
> > +        context.append(SET_HIDDEN_INPUT_FN_NAME).append("(formname, name, value)");
> > +        context.append("{");
> > +        context.append("var form = document.forms[formname];");
> > +        context.prettyLine();
> > +        context.append("if(form.elements[name]==undefined)");
> > +        context.append("{");
> > +        context.append("var newInput = document.createElement['input'];");
> > +        context.prettyLine();
> > +        context.append("newInput.setAttribute('type','hidden');");
> > +        context.prettyLine();
> > +        context.append("newInput.setAttribute('name',name);");
> > +        context.prettyLine();
> > +        context.append("newInput.setAttribute('value',value);");
> > +        context.prettyLine();
> > +        context.append("form.appendChild(newInput);");
> > +        context.append("}");
> > +        context.append("else");
> > +        context.append("{");
> > +        context.append("form.elements[name].value=value;");
> > +        context.append("}");
> > +
> > +        context.append("}");
> > +
> > +        context.prettyLine();
> > +
> > +        context.append("function ");
> > +        context.append(SUBMIT_FORM_FN_NAME).append("(formName, linkId, target, params)");
> >          context.append("{");
> >
> >          //call the script to clear the form (clearFormHiddenParams_<formName>) method
> > -        HtmlRendererUtils.appendClearHiddenCommandFormParamsFunctionCall(context, formName);
> > +        HtmlRendererUtils.appendClearHiddenCommandFormParamsFunctionCall(context, null);
> >
> >          if (autoScroll)
> >          {
> > -            JavascriptUtils.appendAutoScrollAssignment(context, formName);
> > +            JavascriptUtils.appendAutoScrollAssignment(context, null);
> >          }
> >
> >          context.prettyLine();
> >
> >          context.append("if(target!=undefined && target != null)");
> >          context.append("{");
> > -        context.append("document.forms['"+formName+"'].target=target;");
> > +        context.append("document.forms[formName].target=target;");
> >          context.append("}");
> >
> >          context.append("if(params!=undefined && params != null)");
> >          context.append("{");
> >          context.append("for(var i=0; i<params.length; i++)");
> >          context.append("{");
> > -        context.append("if(document.forms['").append(formName).append("'].elements[params[i][0]]==undefined)");
> > -        context.append("{");
> > -        context.append("var form = document.forms['"+formName+"'];");
> > -        context.prettyLine();
> > -        context.append("var newInput = document.createElement['input'];");
> > -        context.prettyLine();
> > -        context.append("newInput.setAttribute('type','hidden');");
> > -        context.prettyLine();
> > -        context.append("newInput.setAttribute('name',params[i][0]);");
> > -        context.prettyLine();
> > -        context.append("newInput.setAttribute('value',params[i][1]);");
> > -        context.prettyLine();
> > -        context.append("form.appendChild(newInput);");
> > -        context.append("}");
> > +        context.append(SET_HIDDEN_INPUT_FN_NAME).append("(formName,params[i][0], params[i][1]);");
> >          context.append("}");
> >          context.append("}");
> >
> >          context.prettyLine();
> >
> > -        context.append("document.forms['"+formName+"'].elements['"+
> > -                HtmlRendererUtils.getHiddenCommandLinkFieldName(formInfo)+"'].value=linkId;");
> > +        context.append(SET_HIDDEN_INPUT_FN_NAME);
> > +        context.append("(formName,formName +'"+NamingContainer.SEPARATOR_CHAR+
> > +                "'+'"+HtmlRendererUtils.HIDDEN_COMMANDLINK_FIELD_NAME+"',linkId);");
> >
> >          context.prettyLine();
> >          context.prettyLine();
> >
> > -        context.append("if(document.forms['"+formName+"'].onsubmit)");
> > +        context.append("if(document.forms[formName].onsubmit)");
> >          context.append("{");
> > -        context.append("var result=document.forms['"+formName+"'].onsubmit();");
> > +        context.append("var result=document.forms[formName].onsubmit();");
> >          context.prettyLine();
> >          context.append("if( (typeof result == 'undefined') || result )");
> >          context.append("{");
> > -        context.append("document.forms['"+formName+"'].submit();");
> > +        context.append("document.forms[formName].submit();");
> >          context.append("}");
> >          context.append("}");
> >          context.append("else ");
> >          context.append("{");
> > -        context.append("document.forms['"+formName+"'].submit();");
> > +        context.append("document.forms[formName].submit();");
> >          context.append("}");
> >          //return false, so that browser does not handle the click
> >          context.append("return false;");
> > @@ -1075,10 +1107,18 @@
> >       */
> >      public static String getClearHiddenCommandFormParamsFunctionName(
> >          String formName) {
> > -        return JavascriptUtils.getValidJavascriptNameAsInRI(CLEAR_HIDDEN_FIELD_FN_NAME
> > -            + "_"
> > -            + formName
> > -            .replace(NamingContainer.SEPARATOR_CHAR, '_'));
> > +        if(formName == null)
> > +        {
> > +            return "'" +CLEAR_HIDDEN_FIELD_FN_NAME
> > +                + "_'+formName.replace('"+NamingContainer.SEPARATOR_CHAR+"','_')";
> > +        }
> > +         else
> > +        {
> > +            return JavascriptUtils.getValidJavascriptNameAsInRI(CLEAR_HIDDEN_FIELD_FN_NAME
> > +                + "_"
> > +                + formName
> > +                .replace(NamingContainer.SEPARATOR_CHAR, '_'));
> > +        }
> >      }
> >
> >      /**
> >
> > Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java
> > URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java?view=diff&rev=442124&r1=442123&r2=442124
> > ==============================================================================
> > --- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java (original)
> > +++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java Mon Sep 11 01:31:53 2006
> > @@ -285,13 +285,26 @@
> >
> >      public static void appendAutoScrollAssignment(HtmlRendererUtils.ScriptContext scriptContext, String formName)
> >      {
> > -        scriptContext.prettyLine();
> > -        scriptContext.append("if(window."+AUTO_SCROLL_FUNCTION+"!=undefined)");
> > -        scriptContext.append("{");
> > -        scriptContext.append("document.forms['").append(formName).append("']");
> > -        scriptContext.append(".elements['").append(AUTO_SCROLL_PARAM).append("']");
> > -        scriptContext.append(".value=").append(AUTO_SCROLL_FUNCTION).append("();");
> > -        scriptContext.append("}");
> > +        if(formName == null)
> > +        {
> > +            scriptContext.prettyLine();
> > +            scriptContext.append("if(window."+AUTO_SCROLL_FUNCTION+"!=undefined)");
> > +            scriptContext.append("{");
> > +            scriptContext.append("document.forms[formName]");
> > +            scriptContext.append(".elements['").append(AUTO_SCROLL_PARAM).append("']");
> > +            scriptContext.append(".value=").append(AUTO_SCROLL_FUNCTION).append("();");
> > +            scriptContext.append("}");
> > +        }
> > +        else
> > +        {
> > +            scriptContext.prettyLine();
> > +            scriptContext.append("if(window."+AUTO_SCROLL_FUNCTION+"!=undefined)");
> > +            scriptContext.append("{");
> > +            scriptContext.append("document.forms['").append(formName).append("']");
> > +            scriptContext.append(".elements['").append(AUTO_SCROLL_PARAM).append("']");
> > +            scriptContext.append(".value=").append(AUTO_SCROLL_FUNCTION).append("();");
> > +            scriptContext.append("}");
> > +        }
> >      }
> >
> >      /**
> >
> >
> >
>


-- 

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces

Re: svn commit: r442124 - in /myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html: HtmlLinkRendererBase.java HtmlRendererUtils.java util/JavascriptUtils.java

Posted by Mike Kienenberger <mk...@gmail.com>.
Hey Martin,

We all kinda unofficially agreed while you were on vacation that we
need open JIRA issues for any non-trivial changes to core or tomahawk
:-)  Thus, we can create changelogs and release notes.



On 9/11/06, mmarinschek@apache.org <mm...@apache.org> wrote:
> Author: mmarinschek
> Date: Mon Sep 11 01:31:53 2006
> New Revision: 442124
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=442124
> Log:
> more revamping of MyFaces JavaScript - submitForm method is now independent of form
>
> Modified:
>     myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
>     myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
>     myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java
>
> Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
> URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java?view=diff&rev=442124&r1=442123&r2=442124
> ==============================================================================
> --- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java (original)
> +++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java Mon Sep 11 01:31:53 2006
> @@ -35,6 +35,7 @@
>  import java.io.UnsupportedEncodingException;
>  import java.net.URLEncoder;
>  import java.util.Iterator;
> +import java.util.Map;
>
>  /**
>   * @author Manfred Geiler
> @@ -44,6 +45,7 @@
>      extends HtmlRenderer {
>      public static final String URL_STATE_MARKER = "JSF_URL_STATE_MARKER=DUMMY";
>      public static final int URL_STATE_MARKER_LEN = URL_STATE_MARKER.length();
> +    private static final String FIRST_LINK_ON_PAGE = "org.apache.MyFaces.FIRST_LINK_ON_PAGE";
>
>      //private static final Log log = LogFactory.getLog(HtmlLinkRenderer.class);
>
> @@ -214,17 +216,24 @@
>          }
>          else
>          {
> -            renderFormSubmitScriptIfNecessary(facesContext, formInfo);
> +            renderFormSubmitScriptIfNecessary(facesContext);
>
>              StringBuffer params = addChildParameters(component, nestingForm);
>
>              String target = getTarget(component);
>
> -            onClick.append("return myFaces_submitForm_").append(JavascriptUtils.getValidJavascriptName(formName,false)).append("('").
> -                    append(clientId).append("',").
> +            onClick.append("return ").
> +                    append(HtmlRendererUtils.SUBMIT_FORM_FN_NAME).append("('").
> +                    append(formName).append("','").
> +                    append(clientId).append("'");
> +
> +            if(params.length()>2 || target != null)
> +            {
> +                onClick.append(",").
>                      append(params).append(",").
> -                    append(target == null ? "null" : ("'" + target + "'")).
> -                    append(");");
> +                    append(target == null ? "null" : ("'" + target + "'"));
> +            }
> +            onClick.append(");");
>
>              //add id parameter for decode to form - todo: better do that dynamically instead of referring to the form
>              String hiddenFieldName = HtmlRendererUtils.getHiddenCommandLinkFieldName(formInfo);
> @@ -236,19 +245,18 @@
>          writer.writeAttribute(HTML.ONCLICK_ATTR, onClick.toString(), null);
>      }
>
> -    private static void renderFormSubmitScriptIfNecessary(FacesContext facesContext, FormInfo formInfo)
> +    private static void renderFormSubmitScriptIfNecessary(FacesContext facesContext)
>          throws IOException {
>
> -        if (facesContext.getExternalContext().getRequestMap().get(getFormSubmitScriptName(formInfo)) == null)
> +        Map map = facesContext.getExternalContext().getRequestMap();
> +        Boolean firstLink = (Boolean) map.get(FIRST_LINK_ON_PAGE);
> +
> +        if(firstLink == null || firstLink.equals(Boolean.TRUE))
>          {
> -            HtmlRendererUtils.renderFormSubmitScript(facesContext, formInfo);
> -            facesContext.getExternalContext().getRequestMap().put(getFormSubmitScriptName(formInfo), Boolean.TRUE);
> -        }
> -    }
> +            map.put(FIRST_LINK_ON_PAGE,Boolean.FALSE);
> +            HtmlRendererUtils.renderFormSubmitScript(facesContext);
>
> -    private static String getFormSubmitScriptName(FormInfo formInfo)
> -    {
> -        return "FORM_SUBMIT_SCRIPT_FOR_"+formInfo.getFormName();
> +        }
>      }
>
>      private String getTarget(UIComponent component)
>
> Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
> URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java?view=diff&rev=442124&r1=442123&r2=442124
> ==============================================================================
> --- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java (original)
> +++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java Mon Sep 11 01:31:53 2006
> @@ -53,6 +53,8 @@
>
>      public static final String CLEAR_HIDDEN_FIELD_FN_NAME =
>          "clearFormHiddenParams";
> +    private static final String SET_HIDDEN_INPUT_FN_NAME = "oamSetHiddenInput";
> +    public static final String SUBMIT_FORM_FN_NAME = "oamSubmitForm";
>
>      private HtmlRendererUtils() {
>          // utility class, do not instantiate
> @@ -802,17 +804,32 @@
>
>      public static void appendClearHiddenCommandFormParamsFunctionCall(ScriptContext context, String formName) {
>
> -        context.prettyLine();
> -        context.append("if(window.");
> -        context.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName));
> -        context.append("!=undefined)");
> -        context.append("{");
> -        context.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName)).append("('").append(formName).append("');");
> -        context.append("}");
> +        if(formName == null)
> +        {
> +            context.prettyLine();
> +            context.append("var clearFn = ");
> +            context.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName));
> +            context.append(";");
> +            context.prettyLine();
> +            context.append("if(eval('window.'+clearFn)!=undefined)");
> +            context.append("{");
> +            context.append("eval('window.'+clearFn+'(formName)');");
> +            context.append("}");
> +        }
> +        else
> +        {
> +            context.prettyLine();
> +            context.append("if(window.");
> +            context.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName));
> +            context.append("!=undefined)");
> +            context.append("{");
> +            context.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName)).append("('").append(formName).append("');");
> +            context.append("}");
> +        }
>      }
>
>
> -    public static void renderFormSubmitScript(FacesContext facesContext, FormInfo formInfo)
> +    public static void renderFormSubmitScript(FacesContext facesContext)
>              throws IOException
>      {
>          ResponseWriter writer = facesContext.getResponseWriter();
> @@ -827,77 +844,92 @@
>          context.prettyLine();
>          context.increaseIndent();
>
> -        prepareScript(context, formInfo, autoScroll);
> +        prepareScript(context, autoScroll);
>
>          writer.writeText(context.toString(),null);
>
>          writer.endElement(HTML.SCRIPT_ELEM);
>      }
>
> -    private static void prepareScript(ScriptContext context, FormInfo formInfo, boolean autoScroll)
> +    private static void prepareScript(ScriptContext context, boolean autoScroll)
>      {
> -        String formName = formInfo.getFormName();
>
> -        context.append("function myFaces_submitForm_").append(
> -                JavascriptUtils.getValidJavascriptName(formName,false)).append("(linkId, target, params)");
> +        context.prettyLine();
> +
> +        context.append("function ");
> +        context.append(SET_HIDDEN_INPUT_FN_NAME).append("(formname, name, value)");
> +        context.append("{");
> +        context.append("var form = document.forms[formname];");
> +        context.prettyLine();
> +        context.append("if(form.elements[name]==undefined)");
> +        context.append("{");
> +        context.append("var newInput = document.createElement['input'];");
> +        context.prettyLine();
> +        context.append("newInput.setAttribute('type','hidden');");
> +        context.prettyLine();
> +        context.append("newInput.setAttribute('name',name);");
> +        context.prettyLine();
> +        context.append("newInput.setAttribute('value',value);");
> +        context.prettyLine();
> +        context.append("form.appendChild(newInput);");
> +        context.append("}");
> +        context.append("else");
> +        context.append("{");
> +        context.append("form.elements[name].value=value;");
> +        context.append("}");
> +
> +        context.append("}");
> +
> +        context.prettyLine();
> +
> +        context.append("function ");
> +        context.append(SUBMIT_FORM_FN_NAME).append("(formName, linkId, target, params)");
>          context.append("{");
>
>          //call the script to clear the form (clearFormHiddenParams_<formName>) method
> -        HtmlRendererUtils.appendClearHiddenCommandFormParamsFunctionCall(context, formName);
> +        HtmlRendererUtils.appendClearHiddenCommandFormParamsFunctionCall(context, null);
>
>          if (autoScroll)
>          {
> -            JavascriptUtils.appendAutoScrollAssignment(context, formName);
> +            JavascriptUtils.appendAutoScrollAssignment(context, null);
>          }
>
>          context.prettyLine();
>
>          context.append("if(target!=undefined && target != null)");
>          context.append("{");
> -        context.append("document.forms['"+formName+"'].target=target;");
> +        context.append("document.forms[formName].target=target;");
>          context.append("}");
>
>          context.append("if(params!=undefined && params != null)");
>          context.append("{");
>          context.append("for(var i=0; i<params.length; i++)");
>          context.append("{");
> -        context.append("if(document.forms['").append(formName).append("'].elements[params[i][0]]==undefined)");
> -        context.append("{");
> -        context.append("var form = document.forms['"+formName+"'];");
> -        context.prettyLine();
> -        context.append("var newInput = document.createElement['input'];");
> -        context.prettyLine();
> -        context.append("newInput.setAttribute('type','hidden');");
> -        context.prettyLine();
> -        context.append("newInput.setAttribute('name',params[i][0]);");
> -        context.prettyLine();
> -        context.append("newInput.setAttribute('value',params[i][1]);");
> -        context.prettyLine();
> -        context.append("form.appendChild(newInput);");
> -        context.append("}");
> +        context.append(SET_HIDDEN_INPUT_FN_NAME).append("(formName,params[i][0], params[i][1]);");
>          context.append("}");
>          context.append("}");
>
>          context.prettyLine();
>
> -        context.append("document.forms['"+formName+"'].elements['"+
> -                HtmlRendererUtils.getHiddenCommandLinkFieldName(formInfo)+"'].value=linkId;");
> +        context.append(SET_HIDDEN_INPUT_FN_NAME);
> +        context.append("(formName,formName +'"+NamingContainer.SEPARATOR_CHAR+
> +                "'+'"+HtmlRendererUtils.HIDDEN_COMMANDLINK_FIELD_NAME+"',linkId);");
>
>          context.prettyLine();
>          context.prettyLine();
>
> -        context.append("if(document.forms['"+formName+"'].onsubmit)");
> +        context.append("if(document.forms[formName].onsubmit)");
>          context.append("{");
> -        context.append("var result=document.forms['"+formName+"'].onsubmit();");
> +        context.append("var result=document.forms[formName].onsubmit();");
>          context.prettyLine();
>          context.append("if( (typeof result == 'undefined') || result )");
>          context.append("{");
> -        context.append("document.forms['"+formName+"'].submit();");
> +        context.append("document.forms[formName].submit();");
>          context.append("}");
>          context.append("}");
>          context.append("else ");
>          context.append("{");
> -        context.append("document.forms['"+formName+"'].submit();");
> +        context.append("document.forms[formName].submit();");
>          context.append("}");
>          //return false, so that browser does not handle the click
>          context.append("return false;");
> @@ -1075,10 +1107,18 @@
>       */
>      public static String getClearHiddenCommandFormParamsFunctionName(
>          String formName) {
> -        return JavascriptUtils.getValidJavascriptNameAsInRI(CLEAR_HIDDEN_FIELD_FN_NAME
> -            + "_"
> -            + formName
> -            .replace(NamingContainer.SEPARATOR_CHAR, '_'));
> +        if(formName == null)
> +        {
> +            return "'" +CLEAR_HIDDEN_FIELD_FN_NAME
> +                + "_'+formName.replace('"+NamingContainer.SEPARATOR_CHAR+"','_')";
> +        }
> +         else
> +        {
> +            return JavascriptUtils.getValidJavascriptNameAsInRI(CLEAR_HIDDEN_FIELD_FN_NAME
> +                + "_"
> +                + formName
> +                .replace(NamingContainer.SEPARATOR_CHAR, '_'));
> +        }
>      }
>
>      /**
>
> Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java
> URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java?view=diff&rev=442124&r1=442123&r2=442124
> ==============================================================================
> --- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java (original)
> +++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java Mon Sep 11 01:31:53 2006
> @@ -285,13 +285,26 @@
>
>      public static void appendAutoScrollAssignment(HtmlRendererUtils.ScriptContext scriptContext, String formName)
>      {
> -        scriptContext.prettyLine();
> -        scriptContext.append("if(window."+AUTO_SCROLL_FUNCTION+"!=undefined)");
> -        scriptContext.append("{");
> -        scriptContext.append("document.forms['").append(formName).append("']");
> -        scriptContext.append(".elements['").append(AUTO_SCROLL_PARAM).append("']");
> -        scriptContext.append(".value=").append(AUTO_SCROLL_FUNCTION).append("();");
> -        scriptContext.append("}");
> +        if(formName == null)
> +        {
> +            scriptContext.prettyLine();
> +            scriptContext.append("if(window."+AUTO_SCROLL_FUNCTION+"!=undefined)");
> +            scriptContext.append("{");
> +            scriptContext.append("document.forms[formName]");
> +            scriptContext.append(".elements['").append(AUTO_SCROLL_PARAM).append("']");
> +            scriptContext.append(".value=").append(AUTO_SCROLL_FUNCTION).append("();");
> +            scriptContext.append("}");
> +        }
> +        else
> +        {
> +            scriptContext.prettyLine();
> +            scriptContext.append("if(window."+AUTO_SCROLL_FUNCTION+"!=undefined)");
> +            scriptContext.append("{");
> +            scriptContext.append("document.forms['").append(formName).append("']");
> +            scriptContext.append(".elements['").append(AUTO_SCROLL_PARAM).append("']");
> +            scriptContext.append(".value=").append(AUTO_SCROLL_FUNCTION).append("();");
> +            scriptContext.append("}");
> +        }
>      }
>
>      /**
>
>
>