Dieses Verhalten kann bis zu einem gewissen Grad auch durch die Einstellung der JSP 2.1-Eigenschaft trimDirectiveWhitespaces
a true
. Dies kann in einzelnen JSP-Dateien durch aktiviert werden:
<%@page trimDirectiveWhitespaces="true" %>
Oder auf todos JSP-Dateien durch den folgenden Eintrag in web.xml
(das als Servlet 2.5 deklariert werden muss!):
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
</jsp-property-group>
</jsp-config>
In Containern vor JSP 2.1 oder in JSP 2.1 Containern, die dies aus internen Gründen nicht unterstützen, wie z.B. Tomcat, müssen Sie die JspServlet
Dokumentation für alle Initialisierungsparameter. Zum Beispiel in Tomcat können Sie es ebenfalls konfigurieren, indem Sie die Option trimSpaces
Init-Parameter von JspServlet
a true
in Tomcats /conf/web.xml
:
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
Zu beachten ist, dass bei beiden Ansätzen der HTML-Code nicht wirklich "umformatiert" wird. Es wird lediglich der Leerraum, der durch Taglibs und Scriptlets entsteht, abgeschnitten. Siehe auch dieser Artikel der Sun . So zum Beispiel die folgenden..
<ul>
<c:forEach items="${list}" var="item">
<li>${item}</li>
</c:forEach>
</ul>
würde im Grunde genommen in
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
</ul>
Also mit doppelter Einrückung. Sie können dies umgehen, indem Sie den Code so umformatieren, dass die JSP-Tags halb eingerückt sind:
<ul>
<c:forEach items="${list}" var="item">
<li>${item}</li>
</c:forEach>
</ul>
Aber ich denke, der JTidyFilter ist hier einfacher :)