java - Tomcat(6) 在将文本包含到结果 html 之前从 bean 中转义文本

标签 java tomcat escaping

当我从 MyBean 获得一些文本时,例如 <p>Hello world</p>并通过 jsp:getProperty 将其包含到 jsp 中在生成的 html 页面中,它将是 &lt;p&gt;Hello world&lt;/p&gt; 我猜想 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="&lt;p&gt;HELLO WORLD&lt;/p&gt;" escapeXml="true"/> <br>
  <c:out value="&lt;p&gt;HELLO WORLD&lt;/p&gt;" escapeXml="false"/>
  </body>
</html>

获得乐趣:

public String getYoba(){
    return "&lt;p&gt;HELLO WORLD&lt;/p&gt;"  ;
}

结果 html:

<html> 
  <head><title>Test</title></head> 
  <body> 
  &amp;lt;p&amp;gt;Год выпуска: 20 июля 2010&amp;lt;/p&amp;gt; <br> 
  &lt;p&gt;Год выпуска: 20 июля 2010&lt;/p&gt; <br> 
  &amp;lt;p&amp;gt;HELLO WORLD&amp;lt;/p&amp;gt; <br> 
  &lt;p&gt;HELLO WORLD&lt;/p&gt;
  </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("&lt;p&gt;HELLO WORLD&lt;/p&gt;");
}

关于java - Tomcat(6) 在将文本包含到结果 html 之前从 bean 中转义文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3298760/

相关文章:

java - onComplete 方法不起作用

maven - 智能 : Adding a Tomcat Plugin in Maven menu

java - 是否可以在任意位置配置其他文件夹以在 war 文件中提供静态资源

java - Tomcat 6/7,Java 8 : Can't compile JSP: [various types] cannot be resolved

python - Django RSS-feed 转义 €

java - 如何在 Java 字符串中输入引号?

javascript - 使用 javascript 转义 html 和非 ascii 字符

java - 其余搜索参数验证

java - 当我们手动将它作为 Windows 服务运行时,如何更改 tomcat 的 java_opts?

java - Criteria 查询返回所有记录