【问题标题】:How to use both single and double quotes inside JSTL/EL expression?如何在 JSTL/EL 表达式中同时使用单引号和双引号?
【发布时间】:2012-01-17 17:13:50
【问题描述】:

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

以下不起作用

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

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

以下

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

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

【问题讨论】:

    标签: escaping jstl el quotes


    【解决方案1】:

    &lt;c:set&gt;参数化它们。

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

    无关到具体问题,你还没有considered 一个真正的 JSON 生成器吗?以 Gson 为例,考虑到 user 是一个完全值得的 Javabean,这是以下 oneliner 的问题:

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

    您将直接获得语法上有效的 JSON,而无需费力地让 JSP/JSTL/EL 生成有效的 JSON。

    【讨论】:

    • 是的,谢谢,可能会使用它。无论如何都想知道 JSTL/EL 是否缺少这样的功能。
    • 也许您只是使用了错误的工具来完成这项工作;) JSP 只是一种旨在动态生成 HTML 的视图技术。 JSTL/EL 被精简以适应该目的。
    • 嗯...有时我会在迭代循环中生成 JSON...我不仅生成 json,还生成 xml……因此,为所有这些交互创建一堆 JSP 是一个想法……
    • 我不认为这是我的错,因为他们没有考虑如何在引号中转义引号 :) 此外,如果 JSP 仅用于 html,那么他们创建了内容类型标签是为了什么?
    • 也是 XML?为此,发明了 JAX-RS。缓存可以委托给持久层。
    猜你喜欢
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 2017-12-07
    相关资源
    最近更新 更多