我有一个使用 Spring Roo 创建的非常基本的 Spring MVC 应用程序。所以整个项目被设置为一个标准的 Spring/Tiles 应用程序(脚手架也是由 Roo 创建的)。当我查看生成的 HTML 源代码时,我看到所有的空格/换行符都被修剪了。出于调试目的,这对我来说很困难/有问题。
我将 Spring 3.x 与 Tomcat 7 一起使用。
我在 SO 和网络上进行了搜索,发现有一个 trimWhiteSpace jsp 指令(this SO post 中的示例),但是当我搜索整个 Roo 生成的代码库时,我在任何地方都看不到这个指令。
我什至已经将<init-param>
和<jsp-config>
行添加到指定的 web.xmlfalse
中,但这也没有任何区别。
在这一点上,我不确定是 Tomcat 正在剥离间距,还是 Spring/Tiles 中的某些东西在做这件事。
如何禁用此功能并在我的标签定义和我的 jsp 文件中存在的我的 HTML 中输出所有间距/换行符?
生成的 HTML 示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE HTML SYSTEM "about:legacy-compat">
<html><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/><meta content="IE=8" http-equiv="X-UA-Compatible"/><link href="/V2/resources/dijit/themes/tundra/tundra.css" type="text/css" rel="stylesheet"/><link href="/V2/resources/styles/standard.css" media="screen" type="text/css" rel="stylesheet"/><link href="/V2/resources/images/favicon.ico" rel="SHORTCUT ICON"/><script type="text/javascript">var djConfig = {parseOnLoad: false, isDebug: false, locale: 'en-us'};</script><script type="text/javascript" src="/V2/resources/dojo/dojo.js"></script><script type="text/javascript" src="/V2/resources/spring/Spring.js"></script><script type="text/javascript" src="/V2/resources/spring/Spring-Dojo.js"></script><script type="text/javascript" language="JavaScript">dojo.require("dojo.parser");</script><script type="text/javascript" src="/V2/resources/jQuery/jquery-2.0.3.min.js"></script><link href="/V2/resources/jQWidgets-3.0.2/styles/jqx.darkblue.css" type="text/css" rel="stylesheet"/><script type="text/javascript" src="/V2/resources/jQWidgets-3.0.2/jqxcore.js"></script><title>Welcome to V2</title></head><body class="tundra spring"><div id="wrapper"><div version="2.0" id="header"><a title="Home" name="Home" href="/V2/"><img src="/V2/resources/images/banner-graphic.png"/></a></div><div id="main"><div version="2.0"><script type="text/javascript">dojo.require('dijit.TitlePane');</script><div id="_title_title_id"><script type="text/javascript">Spring.addDecoration(new Spring.ElementDecoration({elementId : '_title_title_id', widgetType : 'dijit.TitlePane', widgetAttrs : {title: 'Internal Error', open: true}})); </script><h2>Internal Error</h2><p>Sorry, we encountered an internal error.</p></div></div><div version="2.0" id="footer"><span><a href="/V2/">Home</a></span><span id="language"> | Language: <a title="Switch language to English" href="?lang=en"><img alt="Switch language to English" src="/V2/resources/images/en.png" class="flag"/></a> </span><span> | Theme: <a title="standard" href="?theme=standard">standard</a> | <a title="alt" href="?theme=alt">alt</a></span><span><a title="Sponsored by SpringSource" href="http://springsource.com"><img src="/V2/resources/images/springsource-logo.png" alt="Sponsored by SpringSource" align="right"/></a></span></div></div></div></body></html>
default.jspx 示例(基本图块布局):
<html xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:tiles="http://tiles.apache.org/tags-tiles" xmlns:spring="http://www.springframework.org/tags" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" >
<jsp:output doctype-root-element="HTML" doctype-system="about:legacy-compat" />
<jsp:directive.page contentType="text/html;charset=UTF-8" />
<jsp:directive.page pageEncoding="UTF-8" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<util:load-scripts />
<spring:message code="application_name" var="app_name" htmlEscape="false"/>
<title><spring:message code="welcome_h3" arguments="${app_name}" /></title>
</head>
<body class="tundra spring">
<div id="wrapper">
<tiles:insertAttribute name="header" ignore="true" />
<tiles:insertAttribute name="menu" ignore="true" />
<div id="main">
<tiles:insertAttribute name="body"/>
<tiles:insertAttribute name="footer" ignore="true"/>
</div>
</div>
</body>
</html>
如您所见,瓷砖布局定义中的所有空格/换行符都已被删除。