【问题标题】:Simple way to return formatted XML output in JSP document (JSPX)在 JSP 文档 (JSPX) 中返回格式化 XML 输出的简单方法
【发布时间】:2018-10-15 14:47:27
【问题描述】:

当我在 15 多年前尝试切换到基于 XML 的 JSP 时,这是一个问题,现在看来仍然是一个问题。

使用 Tomcat 9,如果我有一个简单的 JSP 页面,输出的格式很好。

<%@ page contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html>
<html lang="en-US">
<head>
  <meta charset="UTF-8"/>
  <title>Example</title>
</head>
<body>
  <p>Example</p>
</body>
</html>

输出看起来与源几乎相同。但是如果我使用 JSP 文档(JSPX):

<?xml version="1.0" encoding="UTF-8" ?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.3">
<jsp:directive.page contentType="text/html; charset=UTF-8" />
<jsp:text>&lt;!DOCTYPE html&gt;</jsp:text>
<html lang="en-US">
<head>
  <meta charset="UTF-8"/>
  <title>Example</title>
</head>
<body>
  <p>Example</p>
</body>
</html>
</jsp:root>

那么输出就变成一长串了:

<!DOCTYPE html><html lang="en-US"><head><meta charset="UTF-8"/><title>Example</title></head><body><p>Example</p></body></html>

是的,我理解这背后的原因:解析为 XML 文档模型、操作树、重新序列化等。但实际上:它很丑,我不喜欢它,而且可能没有人喜欢它。在输出中获得一些合理的换行符和缩进的最简单、最实用的方法是什么?

浏览器不关心的事实是无关紧要的。作为开发人员,我们必须处理这个问题。这很丑陋,而且碍事。 (是的,我知道可能没有人使用 JSPX 甚至 JSP,但我想我还是会问。)

【问题讨论】:

  • 哇,没人知道怎么做吗?我会再次提供赏金,但现在会达到 200,我觉得这只是在浪费我的声誉。

标签: jsp


【解决方案1】:

复制自Strip whitespace from jsp output 有一个trimWhiteSpaces 功能可能是您的问题:

在您的 JSP 中可能有:

<%@ page trimDirectiveWhitespaces="true" %>

您应该将其设置为 false 并在 jsp-config 部分中设置您的 web.xml:

<jsp-config>
  <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <trim-directive-whitespaces>false</trim-directive-whitespaces>
  </jsp-property-group>
</jsp-config>

您可以查看here 以了解可以在 Tomcat 9 服务器中调整的更多配置。

【讨论】:

  • 首先问题的重点是使用 JSPX,所以我不知道为什么提到 &lt;%@ page trimDirectiveWhitespaces="true" %&gt;,因为这是指令的非 XML 形式。尽管如此,我尝试了&lt;jsp:directive.page trimDirectiveWhitespaces="false" /&gt;,但它对我的 JSPX 的输出没有影响。另外,如果您阅读 stackoverflow.com/a/43188063/421049 和其他文档(例如 docs.oracle.com/cd/E19316-01/819-3669/bnajm/index.html),您会发现该指令与问题无关。
  • @GarretWilson 我的错,我当时没有得到你的问题。我会给出答案,因为这似乎对其他人有用
猜你喜欢
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多