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

时间:2012-01-17 17:13:50

标签: escaping jstl el quotes

我想调用fn:在c里面替换EL:out来替换引用字符。

以下不起作用

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

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

以下

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

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

1 个答案:

答案 0 :(得分:5)

使用<c:set>对其进行参数化。

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

对具体问题

无关,你还没有considered真正的JSON生成器吗?以Gson为例,它是以下oneliner的问题,因为user是一个值得尊敬的Javabean:

String json = new Gson().toJson(user);

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