From 221e2fa8604b24aa66eb50c237917be207b4188e Mon Sep 17 00:00:00 2001 From: vito Date: Wed, 23 Nov 2016 01:08:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=AC=E4=B9=89json=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E5=8D=95=E5=BC=95=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/PluginTask.java | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginTask.java b/designer_base/src/com/fr/design/extra/PluginTask.java index eb4a99729..7c624612f 100644 --- a/designer_base/src/com/fr/design/extra/PluginTask.java +++ b/designer_base/src/com/fr/design/extra/PluginTask.java @@ -49,7 +49,7 @@ public class PluginTask extends Task { @Override public void process(String s) { if (StringUtils.isNotBlank(s)) { - updateMessage(changText(s)); + updateMessage(trimText(s)); } } }); @@ -59,20 +59,28 @@ public class PluginTask extends Task { @Override protected void done() { - updateMessage(changText(executor.getTaskFinishMessage())); + updateMessage(trimText(executor.getTaskFinishMessage())); } /** - * 转换掉一些会造成错误的特殊字符 - * 1 ""中的""必须转义 - * 2 js字符串中的\n会导致js字符串变成多行,而js字符创不支持多行拼接 + * vito:由于使用webEngine.executeScript("(" + callback + ")(\"" + newValue + "\")") + * 执行脚本,所以原来规范的json格式也会在拼接字符串后可能抛出参数异常,需要转换掉一些会造成错误的特殊字符, + * 选择在java端替换的原因是异常抛出自executeScript方法的参数,现在规范和拼接的json都能通过了, + * 但是强烈建议不要使用拼接json + *

+ * 1.""中的""必须转义 + * 2.js字符串中的\n会导致js字符串变成多行,而js字符串不支持多行拼接 + * 3.由JSONObject.toString()得到的字符串中html标签的属性会自动加上\造成替换难度加大, + * 这边建议去除所有的html标签 * * @param old 原始字符串 * @return 处理之后的字符串 */ - private String changText(String old) { - if(StringUtils.isNotBlank(old)){ - return old.replaceAll("\"", "\\\\\"").replaceAll("\n", ""); + private String trimText(String old) { + if (StringUtils.isNotBlank(old)) { + String a = old.replaceAll("\n", "").replaceAll("\"", "\\\\\"").replaceAll("\'", "\\\\\'"); + System.out.println(a); + return a; } return StringUtils.EMPTY; }