在JSP文档(JSPX)中返回格式化的XML输出的简单方法

时间:2018-10-15 14:47:27

标签: jsp

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,但是我还是想问一下。)

1 个答案:

答案 0 :(得分:0)

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服务器中调整的更多配置。