当我从 MyBean 获得一些文本时,例如 <p>Hello world</p>
并通过 jsp:getProperty
将其包含到 jsp 中在生成的 html 页面中,它将是 <p>Hello world</p>
我猜想 tomcat 的团队是出于安全原因这样做的,但这不是我想要的行为。
问:如何获得所需的行为?
更新:
@Jörn Horstmann
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="xs" class="bean.XS" scope="application"></jsp:useBean>
<html>
<head><title>Test</title></head>
<body>
<c:out value="${xs.yoba}" escapeXml="true"/> <br>
<c:out value="${xs.yoba}" escapeXml="false"/> <br>
<c:out value="<p>HELLO WORLD</p>" escapeXml="true"/> <br>
<c:out value="<p>HELLO WORLD</p>" escapeXml="false"/>
</body>
</html>
获得乐趣:
public String getYoba(){
return "<p>HELLO WORLD</p>" ;
}
结果 html:
<html>
<head><title>Test</title></head>
<body>
&lt;p&gt;Год выпуска: 20 июля 2010&lt;/p&gt; <br>
<p>Год выпуска: 20 июля 2010</p> <br>
&lt;p&gt;HELLO WORLD&lt;/p&gt; <br>
<p>HELLO WORLD</p>
</body>
</html>
我要:
<html>
<head><title>Test</title></head>
<body>
<P>HELLO WORLD</P>
</body>
</html>
最佳答案
您可以使用将 escapeXml 设置为 false 的 jSTL c:out 标记来解决此问题:
<c:out value="${myBean.property}" escapeXml="false"/>
编辑:
当您的 getter 已经返回转义的 HTML 时,您必须首先取消转义它,例如使用 Apache Commons Lang StringEscapeUtils:
public String getYoba(){
return StringEscapeUtils.unescapeHtml("<p>HELLO WORLD</p>");
}
关于java - Tomcat(6) 在将文本包含到结果 html 之前从 bean 中转义文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3298760/