You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by Mike Kienenberger <mk...@gmail.com> on 2006/09/11 20:52:12 UTC
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
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("}");
> + }
> }
>
> /**
>
>
>
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