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(",");