【问题标题】:Why do I have to suppress XML excaping in this scenario为什么我必须在这种情况下抑制 XML 扩展
【发布时间】:2015-03-17 21:18:49
【问题描述】:

我正在使用向文本文档添加标记的 servlet。 例如,它可能会产生以下句子

根据<span class="legalTerm">the plaintiff</span>,合同从未签署

在我的 jsp 中,我有以下 css、html 和 jstl:

<style>
.legalTerm {
    background: lightgrey;
    color: blue;
    font-size: 16px;
    font-weight: bold;
    text-align:center;
}
</style>
</head>

<body>
    <c:out value="${document}"></c:out>
</body>
</html>

当我运行应用程序时,浏览器中显示的文档如下所示:

according to <span class="legalTerm">the plaintiff</span> the contract was never signed

当我查看页面源时,我看到:

according to &lt;span class=&#034;legalTerm&#034;&gt;the plaintiff&lt;/span&gt; the contract was never signed

我能够通过抑制 XML 转义来获得正确的行为

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

我的问题是:应该这样做吗?
还是我遗漏了一些可以消除抑制 XML 转义的东西?

【问题讨论】:

    标签: html css jstl


    【解决方案1】:

    是的,这是正确的行为以及为什么存在 escapeXML - 允许您防止引擎转义。 escapeXML 的默认值为“true”,因为典型的用例要求它被转义。

    【讨论】:

    • Alfreema,感谢您的回答。你知道为什么浏览器无法正确呈现转义的 HTML 吗?
    • 当您转义 HTML 时,您是在明确告诉浏览器,而不是 呈现 HTML(换句话说,“解释”或“运行”HTML 指令),您宁愿它在屏幕上显示该字符串,以便用户看到 HTML 标记本身。当它没有被转义时,它告诉浏览器实际解释 HTML 并执行标记告诉它执行的任何操作。有意义吗?
    • 再次感谢 alfreema。不太有意义,因为默认值 escapeXML="true" 似乎是少数情况。不过不用担心,我会尽力而为。再次感谢您花时间解释。
    猜你喜欢
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多