【问题标题】:JSTL function to replace quote chars inside a string?JSTL函数替换字符串中的引号字符?
【发布时间】:2012-02-12 11:04:42
【问题描述】:

在字符串值中用 \" 序列替换引号字符的最简单方法是什么?

【问题讨论】:

    标签: string replace jstl el


    【解决方案1】:

    这将是 fn:replace() 函数。

    <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    ...
    ${fn:replace(foo, '"', '\\"')}
    

    与具体问题无关,这是一个经常重复出现的要求,以防止在将用户控制的输入重新显示为 HTML 属性时出现格式错误的 HTML。 通常,您应该改用&lt;c:out&gt;fn:escapeXml()。例如

    <input name="foo" value="<c:out value="${param.foo}" />" />
    <input name="foo" value="${fn:escapeXml(param.foo)}" />
    

    它不仅考虑引号,还考虑所有其他 XML 特殊字符,例如 &lt;&gt;&amp; 等。

    另见:

    【讨论】:

    • 我正在使用 JSP 创建 JSON,因此直接要求是转义引号。一些数据用于稍后显示在页面上,因此它也可能需要 HTML 转义。感谢您的链接!
    • 我宁愿使用功能齐全的 JSON 工具,而且肯定不会在 JSP 中完成这项工作。从这里开始一些具体示例:stackoverflow.com/questions/4112686/… 或者,如果您的环境允许,请使用 JAX-RS 网络服务:stackoverflow.com/questions/7874695/servlet-vs-restful
    【解决方案2】:

    使用 javascript 替换(用 /g 替换所有匹配项)

    string.replace(/"/g, '\\"')
    

    【讨论】:

    • 我在 server-sine 上,在 JSP 文件中,无法传递给 JS
    猜你喜欢
    • 2019-11-02
    • 2023-03-23
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多