我有生成一些HTML的代码,但是当我尝试在jsp中输出这个内容时,所有'&lt;'替换为“<
”和所有“&gt;”使用'>
'。这是呈现结果的部分:
<c:out value="${data}"/>
有人可以解释导致角色替换的原因,以及如何避免这种情况?
PS:我已经尝试了<c:out/>
标签的escapeXml ='false'属性,根本没有显示。
谢谢, 娜塔莎
答案 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。