web-dev-qa-db-fra.com

Supprimer les espaces de la sortie jsp

Comment puis-je supprimer les espaces supplémentaires de la sortie des pages jsp? Existe-t-il un commutateur que je peux activer sur mon web.xml? Existe-t-il un paramètre spécifique à Tomcat?

104
Seth Weiner

Il existe une directive trimWhiteSpaces qui devrait accomplir cela,

Dans votre JSP:

<%@ page trimDirectiveWhitespaces="true" %>

Ou dans la section jsp-config votre fichier web.xml (Notez que cela fonctionne à partir de la spécification de servlet 2.5.):

<jsp-config>
  <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <trim-directive-whitespaces>true</trim-directive-whitespaces>
  </jsp-property-group>
</jsp-config>

Malheureusement, si vous avez un espace requis, vous devrez peut-être également le supprimer, de sorte que vous aurez peut-être besoin d'un espace insécable à certains endroits.

166
Rontologist

Si votre servletcontainer ne prend pas en charge la propriété trimDirectiveWhitespaces de JSP 2.1, vous devez consulter la documentation JspServlet pour connaître les paramètres d'initialisation. Par exemple, dans Tomcat , vous pouvez également le configurer en définissant trimSpaces init-param sur true dans pour JspServlet dans le /conf/web.xml de Tomcat:

<init-param>
    <param-name>trimSpaces</param-name>
    <param-value>true</param-value>
</init-param>

Une alternative complètement différente est le JTidyFilter . Il supprime non seulement les espaces, mais également formate HTML dans un retrait correct. 

27
BalusC

TrimDirectiveWhitespaces est uniquement pris en charge par les conteneurs de servlets prenant en charge JSP 2.1 et ultérieur, ou dans le cas où Tomcat, Tomcat 6 (et certaines versions, par exemple Tomcat 6.0.10, ne l'implémentent pas correctement - ne connaissent pas les autres) Vous trouverez plus d'informations sur trimDirectiveWhitespaces ici: 

http://www.Oracle.com/technetwork/articles/javaee/jsp-21-136414.html

et ici

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

4
Simon B

Si vous utilisez des tags, vous pouvez également y appliquer:

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

Et sur votre jsp:

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

Ce que vous demandez, ce n’est pas directement ce que vous demandez, mais ce qui m’aide est de placer les balises de commentaire HTML de manière intelligente autour de mes balises jsp, ainsi que de mettre les espaces blancs à l’intérieur d’une balise de servlet (<%%>):

${"<!--"}
<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

S'il vous plaît, utilisez la fonction trim, exemple

fn:trim(string1)
1
Jorge Santos Neill

Vous pouvez aller plus loin et également supprimer les nouvelles lignes (retours à la ligne) entre les balises HTML lors de la création.

Par exemple. changement:

<p>Hello</p>
<p>How are you?</p>

dans:

<p>Hello</p><p>How are you?</p>

Faites-le, utilisez le maven-replacer-plugin et configurez-le dans 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>&gt;\s*&lt;</token>
                <value>&gt;&lt;</value>
                <regexFlags>
                    <regexFlag>MULTILINE</regexFlag>
                </regexFlags>
            </configuration>
        </execution>
    </executions>
</plugin>

Cela ne modifiera que les JSP du répertoire de construction et ne touchera pas les JSP de vos sources.

Vous devrez peut-être adapter le chemin (<filesToInclude>) dans lequel se trouvent vos JSP.

0
yglodt

Ajoutez/modifiez votre fichier Tomcat catalina.properties avec 

org.Apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false

Voir aussi: https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7

0
Rajkumar Rajadurai