Wie kann ich zusätzliche Leerzeichen aus der Ausgabe von JSP-Seiten entfernen? Gibt es einen Schalter, den ich auf meiner web.xml umlegen kann? Gibt es eine Tomcat-spezifische Einstellung?
Wie kann ich zusätzliche Leerzeichen aus der Ausgabe von JSP-Seiten entfernen? Gibt es einen Schalter, den ich auf meiner web.xml umlegen kann? Gibt es eine Tomcat-spezifische Einstellung?
Antworten:
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 einen erforderlichen Platz haben, muss dieser möglicherweise auch entfernt werden, sodass Sie an einigen Stellen möglicherweise einen nicht unterbrechenden Platz benötigen.
web.xml
: <init-param> <param-name> trimSpaces </ param-name> <param-value> true </ param-value> </ init-param>
Wenn Ihr Servletcontainer die JSP 2.1- trimDirectiveWhitespaces
Eigenschaft nicht unterstützt , müssen Sie in der JspServlet
Dokumentation nach Initialisierungsparametern suchen. In beispielsweise Tomcat können Sie es auch konfigurieren, indem Sie trimSpaces
init-param in Tomcat auf true
in for setzen :JspServlet
/conf/web.xml
<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 formatiert auch HTML in einem korrekten Einzug.
TrimDirectiveWhitespaces wird nur von Servlet-Containern unterstützt, die JSP 2.1 und höher unterstützen, oder im Fall von Tomcat Tomcat 6 (und einige Versionen, z. B. Tomcat 6.0.10, implementieren es nicht ordnungsgemäß - kennen die anderen nicht). Weitere Informationen zu trimDirectiveWhitespaces finden Sie hier:
http://www.oracle.com/technetwork/articles/javaee/jsp-21-136414.html
und hier
Nicht direkt, wonach Sie fragen, aber was mir hilft, ist, HTML-Kommentar-Tags auf clevere Weise um meine JSP-Tags zu platzieren und Leerzeichen in ein Servlet-Tag einzufügen (<%%>):
${"<!--"}
<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>
Sie können noch einen Schritt weiter gehen und zum Zeitpunkt der Erstellung auch Zeilenumbrüche (Zeilenumbrüche) zwischen den HTML-Tags entfernen.
ZB ändern:
<p>Hello</p>
<p>How are you?</p>
in:
<p>Hello</p><p>How are you?</p>
Tun Sie das, verwenden Sie das maven-replacer-plugin
und richten Sie es ein in pom.xml
:
<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 nicht die JSPs in Ihren Quellen.
Möglicherweise müssen Sie den Pfad ( <filesToInclude>
) anpassen, in dem sich Ihre JSPs befinden.
Bitte verwenden Sie beispielsweise die Trimmfunktion
fn:trim(string1)
Fügen Sie Ihre Tomcat- catalina.properties
Datei mit hinzu / bearbeiten Sie sie
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
Siehe auch: https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7