JSP中的HTML输出问题

时间:2009-05-14 14:53:54

标签: java html jsp jsp-tags

我有生成一些HTML的代码,但是当我尝试在jsp中输出这个内容时,所有'<'替换为“<”和所有“>”使用'>'。这是呈现结果的部分:

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

有人可以解释导致角色替换的原因,以及如何避免这种情况?

PS:我已经尝试了<c:out/>标签的escapeXml ='false'属性,根本没有显示。

谢谢, 娜塔莎

4 个答案:

答案 0 :(得分:1)

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

如果你想拥有&lt;和&gt;最终用户可见的字符然后必须显示为&amp; lt;和&amp; gt;在标记中。

尼克

答案 1 :(得分: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: - )

答案 2 :(得分:0)

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

答案 3 :(得分:0)

<c:out value="${data}"/>转义HTML字符,${data}则不转义。看看this related question