【发布时间】:2014-08-25 17:39:10
【问题描述】:
我正在尝试转义 JSP 中的字符串以在 AJAX 调用上返回有效的 JSON,但是 spring:escapeBody 标记没有正确转义 JSON 的单引号。有效的 JSON 不应转义单引号。
<%@ page trimDirectiveWhitespaces="true" contentType="json/application"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
{
"status": "success",
"body" : "<spring:escapeBody javaScriptEscape="true">
if you don't have "user" an account
</spring:escapeBody>"
}
所以这段代码的计算结果为:
{
"status": "success",
"body" : "if you don\'t have \"user\" an account"
}
但有效的 JSON 必须是:
{
"status": "success",
"body" : "if you don't have \"user\" an account"
}
反正我不能用 escapeBody 标签转义单引号吗? 或者我可以使用其他标签吗?也许是一个 JSTL 函数?
【问题讨论】:
-
这是获取 JSON 响应的一种非常不寻常的方式。为什么不从控制器返回对象并让 Jackson 处理 JSON 写入?
-
这是对我的实际代码的轻微简化,我实际上是在尝试在 JSON 对象的主体中返回一个现有的标记文件(该标记包含未转义的单引号)。我能否在控制器中正确转义标记文件,然后返回转义的 HTML/Javascript?
-
@Bart 感谢您指出这是获取 JSON 响应的一种不寻常的方式。我想每个人都应该远离
spring:escapeBody,看看“Java to JSON 最佳实践”和“java to json 最佳库”,即stackoverflow.com/questions/7539954/…