escaping - 如何在 JSTL/EL 表达式中同时使用单引号和双引号?

标签 escaping jstl el quotes

我想在 c:out 内的 EL 内调用 fn:replace 来替换引号字符。

以下不起作用

<c:out value="${fn:replace(userName,'"','\\"')}"/>

因为 XML 解析器在第一个双引号处停止并且看不到 c:cout 标记终止(JSP 编译阶段错误)。

下列
<c:out value="${fn:replace(userName,'&quot;','\\&quot;')}"/>

不起作用,可能是因为替换函数没有看到实际的引号字符。

最佳答案

<c:set> 参数化它们.

<c:set var="search" value='"' />
<c:set var="replace" value='\\"' />
<c:out value="${fn:replace(userName, search, replace)}"/>

无关 具体的问题,你还没有吗considered一个真正的 JSON 生成器?例如,对于 Gson,考虑到 user,这是以下 oneliner 的问题是一个完整的Javabean:
String json = new Gson().toJson(user);

您将直接获得语法上有效的 JSON,而无需摆弄所有让 JSP/JSTL/EL 生成有效 JSON 的方法。

关于escaping - 如何在 JSTL/EL 表达式中同时使用单引号和双引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8898815/

相关文章:

java - JSTL/EL 等效于测试 null 和列表大小?

python - impala shell,带大写字母的 shell 命令

powershell - 选择字符串转义字符

java - 从 JSF 传递枚举值作为参数

java - Spring MVC 将多个列表从 Controller 传递到 jsp

java - 比较 JSP 中的日历日期

java - EL表达式: passing null as value of BigDecimal field

Java/JSON.simple - 在斜杠之前打印反斜杠

python - 如何选择性地转义 Python 字符串中的百分比 (%)?

java - 在嵌入式 Jetty 实例上运行的 JSP 页面中未解析 JSTL