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:40:23 UTC

svn commit: r947903 - /myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java

Author: lu4242
Date: Tue May 25 03:40:23 2010
New Revision: 947903

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

Modified:
    myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java

Modified: myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java?rev=947903&r1=947902&r2=947903&view=diff
==============================================================================
--- myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java (original)
+++ myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java Tue May 25 03:40:23 2010
@@ -339,8 +339,39 @@ public abstract class HtmlLinkRendererBa
                 // when is called on writer.writeAttribute, encode method
                 // is called again so we have a duplicated encode
                 // call.
+                // 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 ? org.apache.myfaces.shared.renderkit.html.util.HTMLEncoder.encode(value.toString(), false, false) : "";
-                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) {
                     params.append(",");