在速度中转义双引号
Escape double quote in velocity
我使用的是 velocity 1.7,模板如下。
var jsCode = "${code}";
eval(jsCode);
如果代码是"var id = 123",那么实际的js代码是
var jsCode = "var id = 123";
eval(jsCode);
没有问题。
但是,如果代码是"var name = "lucy"",那么实际的js代码是
var jsCode = "var name = "lucy"";
eval(jsCode);
显然有语法错误。
而如果代码是var jsonStr = "{\"id\":1, \"name\":\"lucy\"}",问题就更严重了
代码未知,可以是任何内容。
如何解决这个问题?
Velocity 也在 velocity-tools 项目中开发 EscapeTool,它使用不同的选项转义
Tool for working with escaping in Velocity templates. It provides methods to escape outputs for Velocity, Java, JavaScript, HTML, HTTP, XML and SQL
你的情况是 javascript 所以使用 $esc.javascript(
例子:
$javascript -> He didn't say, "Stop!"
$esc.javascript($javascript) -> He didn\'t say, \"Stop!\"
我使用的是 velocity 1.7,模板如下。
var jsCode = "${code}";
eval(jsCode);
如果代码是"var id = 123",那么实际的js代码是
var jsCode = "var id = 123";
eval(jsCode);
没有问题。
但是,如果代码是"var name = "lucy"",那么实际的js代码是
var jsCode = "var name = "lucy"";
eval(jsCode);
显然有语法错误。
而如果代码是var jsonStr = "{\"id\":1, \"name\":\"lucy\"}",问题就更严重了
代码未知,可以是任何内容。
如何解决这个问题?
Velocity 也在 velocity-tools 项目中开发 EscapeTool,它使用不同的选项转义
Tool for working with escaping in Velocity templates. It provides methods to escape outputs for Velocity, Java, JavaScript, HTML, HTTP, XML and SQL
你的情况是 javascript 所以使用 $esc.javascript(
例子:
$javascript -> He didn't say, "Stop!"
$esc.javascript($javascript) -> He didn\'t say, \"Stop!\"