You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2010/05/25 05:42:41 UTC

svn commit: r947905 - in /myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html: HtmlButtonRendererBase.java HtmlLinkRendererBase.java

Author: lu4242
Date: Tue May 25 03:42:41 2010
New Revision: 947905

URL: http://svn.apache.org/viewvc?rev=947905&view=rev
Log:
MYFACES-2726 CommandLink renderer do not escape \ characters in generated javascript

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

Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java?rev=947905&r1=947904&r2=947905&view=diff
==============================================================================
--- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java (original)
+++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java Tue May 25 03:42:41 2010
@@ -392,7 +392,39 @@ public class HtmlButtonRendererBase
             // if HTMLEncoder.encode is called, then
             // when is called on writer.writeAttribute, encode method
             // is called again so we have a duplicated encode call.
-            String strParamValue = value != null ? value.toString() : "";
+            // MYFACES-2726 All '\' and "'" chars must be escaped 
+            // because there will be inside "'" javascript quotes, 
+            // otherwise the value will not correctly restored when
+            // the command is post.
+            //String strParamValue = value != null ? value.toString() : "";
+            String strParamValue = "";
+            if (value != null)
+            {
+                strParamValue = value.toString();
+                StringBuffer buff = null;
+                for (int i = 0; i < strParamValue.length(); i++)
+                {
+                    char c = strParamValue.charAt(i); 
+                    if (c == '\'' || c == '\\')
+                    {
+                        if (buff == null)
+                        {
+                            buff = new StringBuffer();
+                            buff.append(strParamValue.substring(0,i));
+                        }
+                        buff.append('\\');
+                        buff.append(c);
+                    }
+                    else if (buff != null)
+                    {
+                        buff.append(c);
+                    }
+                }
+                if (buff != null)
+                {
+                    strParamValue = buff.toString();
+                }
+            }
 
             if (params.length() > 1) 
             {

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?rev=947905&r1=947904&r2=947905&view=diff
==============================================================================
--- 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 Tue May 25 03:42:41 2010
@@ -526,7 +526,39 @@ public abstract class HtmlLinkRendererBa
             // if HTMLEncoder.encode is called, then
             // when is called on writer.writeAttribute, encode method
             // is called again so we have a duplicated encode call.
-            String strParamValue = value != null ? value.toString() : "";
+            // MYFACES-2726 All '\' and "'" chars must be escaped 
+            // because there will be inside "'" javascript quotes, 
+            // otherwise the value will not correctly restored when
+            // the command is post.
+            //String strParamValue = value != null ? value.toString() : "";
+            String strParamValue = "";
+            if (value != null)
+            {
+                strParamValue = value.toString();
+                StringBuffer buff = null;
+                for (int i = 0; i < strParamValue.length(); i++)
+                {
+                    char c = strParamValue.charAt(i); 
+                    if (c == '\'' || c == '\\')
+                    {
+                        if (buff == null)
+                        {
+                            buff = new StringBuffer();
+                            buff.append(strParamValue.substring(0,i));
+                        }
+                        buff.append('\\');
+                        buff.append(c);
+                    }
+                    else if (buff != null)
+                    {
+                        buff.append(c);
+                    }
+                }
+                if (buff != null)
+                {
+                    strParamValue = buff.toString();
+                }
+            }
 
             if (params.length() > 1) 
             {