当我在15年前尝试切换到基于 XML的JSP时,这是一个问题,看起来它仍然是一个问题. 使用Tomcat 9,如果我有一个简单的JSP页面,输出格式很好. %@ page contentType="text/html; charset=UTF-8" %!DOCTYPE htmlh
使用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><!DOCTYPE html></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,但我想我还是会问.)
从 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服务器中调整的进一步配置.