You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2020/07/09 08:59:30 UTC

[myfaces-tobago] 06/09: Tobago-1999: SuggestRenderer: escape '"' in json

This is an automated email from the ASF dual-hosted git repository.

weber pushed a commit to branch TOBAGO-1999_Select2
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git

commit 34a09d3fba16f042e1f6f80c426e39e0d3ea46e8
Author: Volker Weber <v....@inexso.de>
AuthorDate: Tue Apr 21 12:50:14 2020 +0200

    Tobago-1999: SuggestRenderer: escape '"' in json
---
 .../renderkit/html/standard/standard/tag/SuggestRenderer.java    | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SuggestRenderer.java b/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SuggestRenderer.java
index 230655f..6cd6519 100644
--- a/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SuggestRenderer.java
+++ b/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SuggestRenderer.java
@@ -35,6 +35,7 @@ import org.apache.myfaces.tobago.renderkit.html.DataAttributes;
 import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
 import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
 import org.apache.myfaces.tobago.renderkit.html.HtmlInputTypes;
+import org.apache.myfaces.tobago.renderkit.html.JsonUtils;
 import org.apache.myfaces.tobago.renderkit.html.util.HtmlRendererUtils;
 import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
 
@@ -154,8 +155,8 @@ public class SuggestRenderer extends InputRendererBase {
     for (final AutoSuggestItem item : items.getItems()) {
       builder.append("{");
 
-      builder.append("\"id\":\"").append(item.getValue()).append("\",");
-      builder.append("\"text\":\"").append(item.getLabel()).append("\"");
+      builder.append("\"id\":\"").append(encode(item.getValue())).append("\",");
+      builder.append("\"text\":\"").append(encode(item.getLabel())).append("\"");
 
       builder.append("},");
     }
@@ -168,4 +169,8 @@ public class SuggestRenderer extends InputRendererBase {
     writer.endElement(HtmlElements.INPUT);
   }
 
+  private String encode(String value) {
+    return value.replace("\"", "\\\"").replace("\\", "\\\\");
+  }
+
 }