【问题标题】:JSTL escaping special characters [duplicate]JSTL转义特殊字符[重复]
【发布时间】:2011-09-02 07:51:44
【问题描述】:

我对特殊字符有这个奇怪的问题。 在 JSP 中,我使用字段名称作为 id,名称可以是任何类似

id="<1 and &>2" (OR)
id="aaa & bbb"

除了名称之外,我没有任何其他选项可以使用 ID,这是我从后端获得的唯一信息。

那么,是否有任何逻辑可以使用 JSTL 删除所有特殊字符。 在目前的场景下,我会在 JS 中对 ID 进行一些操作。这会导致各种浏览器出现许多问题。

请建议,提前谢谢...

【问题讨论】:

    标签: jsp escaping jstl special-characters


    【解决方案1】:

    I think this is what you are lokking for

    使用 Spring 的 HtmlUtils.htmlEscape(字符串输入)。

    【讨论】:

    • 感谢链接,但这不是我的要求,我只需要在前端进行特殊字符处理。只需要处理ID
    • 虽然这可行,但这不是正确的方法。在 web 应用程序中,转义应该在视图端完成,而不是在业务端。 JSP 是使用 Java 代码错误的观点。使用 JSP taglibs/EL 函数。
    • @BalusC 我攻击,相同的代码可以移动到标记并使用它。
    • JSTL <c:out>fn:escapeXml() 已经这样做了。不需要其他库。
    • @BalusC 对不起,我不知道 JSTL 功能。我也会推荐 ${fn:escapeXml}。谢谢。
    【解决方案2】:

    JSTL 提供了两种转义 HTML 特殊字符的方法:

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    […]
    <c:out value="${myName}"/> 
    

    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    […]
    ${fn:escapeXml(myName)}
    

    两者都会将特殊字符转换为各自的 HTML 实体:(&amp;lt; 变为 &amp;lt;&amp;amp; 变为 &amp;amp;...)。

    请注意,ID 必须以 HTML 编码,而不是 JavaScript。

    【讨论】:

    • 我不需要使用 escapeXml,因为我已经得到了像 < 这样的数据。而不是
    • 那又怎样? <包含一个 HTML 特殊字符:&。如果
    • 嘿抱歉,这不是关于显示,而是关于将值放在示例 div id 中。我无法在 js 中引用此 ID
    • 它没有显示的事实并没有改变任何东西。如果ID必须为<,则必须写为&lt;在 HTML 源代码中。使用 document.getElementById("<") 应该返回您的 div。有关示例,请参见 jsfiddle.net/JQrWu
    • Hello
      请试试这个
    【解决方案3】:

    我认为您的问题被误解了。 我与您到达了同一点,并使用 excapeXml="false" 解决了问题。

    <c:out value="${id}" escapeXml="false"/> 
    

    我在数据库中有如下数据:

    <你好世界>

    escapeXml="false" 让它显示

    <Hello World>
    

    【讨论】:

    • 在数据库中将字符串转义为 HTML 不是一个好主意。
    【解决方案4】:

    我刚刚遇到了一种情况,我必须逃避 ' 即单引号与其他特殊字符分开。在这种情况下 fn:escapeXml 失败。所以我使用了 Spring API 的 JavaScriptUtils.javaScriptEscape(),创建了一个标签并应用。现在问题解决了。我还提到了网址:http://www.coderanch.com/t/528521/JSP/java/Passing-JSTL-variable-special-characters

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      相关资源
      最近更新 更多