Comment puis-je supprimer les espaces supplémentaires de la sortie des pages jsp? Y a-t-il un commutateur que je peux activer sur mon web.xml? Existe-t-il un paramètre spécifique à Tomcat?
Comment puis-je supprimer les espaces supplémentaires de la sortie des pages jsp? Y a-t-il un commutateur que je peux activer sur mon web.xml? Existe-t-il un paramètre spécifique à Tomcat?
Réponses:
Il existe une directive trimWhiteSpaces qui devrait accomplir cela,
Dans votre JSP:
<%@ page trimDirectiveWhitespaces="true" %>
Ou dans la section jsp-config votre 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, il peut également avoir besoin de la bande, vous pouvez donc avoir besoin d'un espace insécable à certains endroits.
web.xml
: <init-param> <param-name> trimSpaces </param-name> <param-value> true </param-value> </init-param>
Si votre servletcontainer ne prend pas en charge la trimDirectiveWhitespaces
propriété JSP 2.1 , vous devez consulter sa JspServlet
documentation pour tous les paramètres d'initialisation. Dans Tomcat , par exemple , vous pouvez également le configurer en définissant trimSpaces
init-param sur true
in for JspServlet
dans Tomcat's /conf/web.xml
:
<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 il met également en forme le HTML dans une indentation correcte.
Le trimDirectiveWhitespaces n'est pris en charge que par les conteneurs de servlet qui prennent en charge JSP 2.1 et ultérieur, ou dans le cas de Tomcat, Tomcat 6 (et certaines versions, par exemple Tomcat 6.0.10, ne l'implémentent pas correctement - je ne connais pas les autres). Il y a plus d'informations sur trimDirectiveWhitespaces ici:
http://www.oracle.com/technetwork/articles/javaee/jsp-21-136414.html
et ici
Pas directement ce que vous demandez, mais ce qui m'aide, c'est de mettre intelligemment les balises de commentaire HTML autour de mes balises jsp, et également de mettre des espaces dans 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>
Vous pouvez aller plus loin et supprimer les nouvelles lignes (retours chariot) entre les balises html au moment de la construction.
Par exemple, changer:
<p>Hello</p>
<p>How are you?</p>
dans:
<p>Hello</p><p>How are you?</p>
Faites cela, 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>
) où se trouvent vos JSP.
Veuillez utiliser la fonction Trim, exemple
fn:trim(string1)
Ajoutez / modifiez votre catalina.properties
fichier tomcat avec
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
Voir aussi: https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7