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?
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.
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.
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
Si vous utilisez des tags, vous pouvez également y appliquer:
<%@ tag description="My Tag" trimDirectiveWhitespaces="true" %>
Et sur votre jsp:
<%@ page trimDirectiveWhitespaces="true" %>
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>
S'il vous plaît, utilisez la fonction trim, exemple
fn:trim(string1)
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>>\s*<</token>
<value>><</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.
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