java - VelocityEngine 从字符串中删除转义字符
问题描述
当我打电话时:
velocityEngine.evaluate(velocityContext, writer, "", template);
与parameter.querystring
= {"hi": "\"hello\""}
评估后writer
包含{"hi": ""hello""}
问题:
- 为什么 Velocity 会删除转义字符?
- 如何防止删除转义字符?
解决方案
注意:我不知道 VelocityEngine,所以对它持保留态度。
为什么 Velocity 会删除转义字符?
parameter.querystring
VelocityEngine 很可能将JSON 中的值作为单独的字符串读取。所以 String"\"hello\""
被读取为 text "hello"
。然后稍后在编写器中,它只是将这个字符串按原样粘贴回来。
我个人认为这是作者源代码中的一个缺陷,它应该Pattern.quote(String)
在插入之前使用类似的东西来转义所有字符。
如何防止删除转义字符?
\
可以手动添加额外的转义符作为编写器行为的解决方法。所以你parameter.querystring
会变成:
{"hi": "\\\"hello\\\""}
基本上是 text \"hello\"
,其中\
和"
字符都被转义,并附\
加到 java String 中。
推荐阅读
- nsis - 如何使用 NSIS 检查 Visual C++ 2017 可再发行 x86 是否已安装
- javascript - A-Frame "mouseenter" 在 VR 模式下不起作用
- firebase - Firebase 托管 - 如何防止标准域导致内容重复?
- python-3.x - 无法找到正确的素数集
- django - 如何根据 POST 数据进行组合查询
- laravel - 将对象添加到指定位置的 laravel 集合
- java - Eclipse 中针对文件编写器的不必要的资源泄漏警告
- c# - SqlCommand 不添加数据
- php - 在 Woocommerce 中以编程方式设置或更新产品运输类别
- php - 在基于 WordPress 的网站中将“上传图片”添加到注册表单