0

我有生成一些 HTML 的代码,但是当我尝试在 jsp 中输出这些内容时,所有的 '<' 都被替换为 ' &lt;',所有的 '>' 都被替换为 ' &gt;'。这是呈现结果的部分:

<c:out value="${data}"/>

有人可以解释导致字符替换的原因,以及如何避免它?

PS:我试过<c:out/>标签的 escapeXml='false' 属性,什么都没有显示。

谢谢,娜塔莎

4

4 回答 4

1

out 标记的行为应如此 - 如果您确实希望输出文字值,您可以直接在文本中插入 EL expressen ${data}。也就是说,而不是

Some content <c:out value="${data}"/> some more content

你会用

Some content ${data} some more content 

在您的 JSP 中。

在你对 c:out 生气之前,请考虑输出通常是用户放在那里的东西——可能带有一些不需要的代码。想象一下在 StackOverflow 上使用 ${data} 而不是(C# 版本的)c:out :-)

于 2009-05-14T16:43:49.157 回答
1

您希望生成的 HTML 做什么,您希望它成为浏览器使用的标记,还是希望它显示在最终页面上,例如作为用户可见的示例代码?如果没有 escapeXml='false' ,它将作为 HTML 输出到浏览器并与所有其他标记一起解释。使用 escapeXml='true' 时,它将变成对最终用户可见的转义标记。所以这一切都取决于你想要做什么。

如果您想让 < 和 > 字符对最终用户可见,那么它们必须显示为 < 和> 在标记中。

缺口

于 2009-05-14T15:24:47.927 回答
0

c:out 标记上有一个 escapeXml 属性,默认设置为 true,将其设置为 false 并且不会发生转义,即您的 HTML 将按原样在浏览器中输出。

于 2009-05-14T16:35:59.503 回答
0

<c:out value="${data}"/>转义 HTML 字符而不转义${data}。看看这个相关的问题

于 2009-05-14T16:59:25.080 回答