it-swarm.com.de

Entfernen Sie Leerzeichen von der Jsp-Ausgabe

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?

104
Seth Weiner

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.

166
Rontologist

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. 

27
BalusC

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

http://raibledesigns.com/rd/entry/trim_spaces_in_your_jsp1

4
Simon B

Wenn Sie Tags verwenden, können Sie sich auch dort bewerben:

<%@ tag description="My Tag" trimDirectiveWhitespaces="true" %>

Und in deinem jsp:

<%@ page trimDirectiveWhitespaces="true" %>
3
Andres

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>
2
redolent

Bitte benutzen Sie die Trimmfunktion, Beispiel

fn:trim(string1)
1

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>&gt;\s*&lt;</token>
                <value>&gt;&lt;</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.

0
yglodt

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

0