Wie kann ich zusätzliche Leerzeichen aus der Ausgabe von JSP-Seiten entfernen? Gibt es einen Schalter, den ich meine web.xml umdrehen kann? Gibt es eine Tomcat-spezifische Einstellung?
Es gibt eine trimWhiteSpaces-Direktive, die dies erreichen soll.
In Ihrer JSP:
<%@ page trimDirectiveWhitespaces="true" %>
Oder im Abschnitt "jsp-config" Ihre web.xml (Beachten Sie, dass dies ab Servlet-Spezifikation 2.5 funktioniert.):
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
</jsp-property-group>
</jsp-config>
Wenn Sie über einen erforderlichen Speicherplatz verfügen, ist es möglicherweise auch erforderlich, dass der Streifen entfernt wird. In einigen Bereichen benötigen Sie möglicherweise einen sicheren Speicherplatz.
Wenn Ihr Servletcontainer die JSP 2.1-Eigenschaft trimDirectiveWhitespaces
nicht unterstützt, müssen Sie in der JspServlet
-Dokumentation nach Initialisierungsparametern suchen. In Tomcat können Sie dies ebenfalls konfigurieren, indem Sie trimSpaces
init-param in true
in JspServlet
in /conf/web.xml
von Tomcat setzen:
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
Eine ganz andere Alternative ist der JTidyFilter . Es schneidet nicht nur Leerzeichen ab, sondern auch format HTML in einer korrekten Einrückung.
Die trimDirectiveWhitespaces werden nur von Servlet-Containern unterstützt, die JSP 2.1 oder später unterstützen, oder Tomcat 6 oder Tomcat 6 (und einige Versionen, z. B. Tomcat 6.0.10, implementieren es nicht richtig - kennen die anderen nicht) Weitere Informationen zu trimDirectiveWhitespaces finden Sie hier:
http://www.Oracle.com/technetwork/articles/javaee/jsp-21-136414.html
und hier
Wenn Sie Tags verwenden, können Sie sich auch dort bewerben:
<%@ tag description="My Tag" trimDirectiveWhitespaces="true" %>
Und in deinem jsp:
<%@ page trimDirectiveWhitespaces="true" %>
Nicht direkt das, wonach Sie fragen, aber was mir dabei hilft, ist, HTML-Kommentartags auf geschickte Weise um meine JSP-Tags herum zu platzieren und Leerzeichen in ein Servlet-Tag (<%%>) zu setzen:
${"<!--"}
<c:if test="${first}">
<c:set var="extraClass" value="${extraClass} firstRadio"/>
</c:if>
<c:set var="first" value="${false}"/>
${"-->"}<%
%><input type="radio" id="input1" name="dayChooser" value="Tuesday"/><%
%><label for="input1" class="${extraClass}">Tuesday</label>
Bitte benutzen Sie die Trimmfunktion, Beispiel
fn:trim(string1)
Sie können noch einen Schritt weitergehen und auch Zeilenumbrüche (Wagenrücklauf) zwischen den HTML-Tags während der Erstellung entfernen.
Z.B. Veränderung:
<p>Hello</p>
<p>How are you?</p>
in:
<p>Hello</p><p>How are you?</p>
Tun Sie das, verwenden Sie den maven-replacer-plugin
und richten Sie ihn in pom.xml
ein:
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.3</version>
<executions>
<execution>
<id>stripNewlines</id>
<phase>prepare-package</phase>
<goals>
<goal>replace</goal>
</goals>
<configuration>
<basedir>${project.build.directory}</basedir>
<filesToInclude>projectname/WEB-INF/jsp/**/*.jsp</filesToInclude>
<token>>\s*<</token>
<value>><</value>
<regexFlags>
<regexFlag>MULTILINE</regexFlag>
</regexFlags>
</configuration>
</execution>
</executions>
</plugin>
Dadurch werden nur die JSPs im Build-Verzeichnis geändert und die JSPs in den Quellen nicht berührt.
Möglicherweise müssen Sie den Pfad (<filesToInclude>
), in dem sich Ihre JSPs befinden, anpassen.
Fügen Sie Ihre Tomcat catalina.properties
-Datei mit hinzu
org.Apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
Siehe auch: https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7