Come posso eliminare gli spazi bianchi extra dall'output delle pagine jsp? C'è un interruttore che posso attivare sul mio web.xml? Esiste un'impostazione specifica per Tomcat?
Come posso eliminare gli spazi bianchi extra dall'output delle pagine jsp? C'è un interruttore che posso attivare sul mio web.xml? Esiste un'impostazione specifica per Tomcat?
Risposte:
Esiste una direttiva trimWhiteSpaces che dovrebbe eseguire questa operazione,
Nel tuo JSP:
<%@ page trimDirectiveWhitespaces="true" %>
O nella sezione jsp-config il tuo web.xml (nota che funziona a partire dalla specifica del 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>
Sfortunatamente, se hai uno spazio richiesto, potrebbe anche essere necessario rimuoverlo, quindi potresti aver bisogno di uno spazio unificatore in alcune posizioni.
web.xml
: <init-param> <param-name> trimSpaces </param-name> <param-value> true </param-value> </init-param>
Se il tuo servletcontainer non supporta la trimDirectiveWhitespaces
proprietà JSP 2.1 , devi consultare la sua JspServlet
documentazione per eventuali parametri di inizializzazione. In Tomcat , ad esempio , puoi configurarlo anche impostando trimSpaces
init-param su true
in for JspServlet
in Tomcat /conf/web.xml
:
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
Un'alternativa completamente diversa è JTidyFilter . Non solo taglia gli spazi bianchi, ma formatta anche l' HTML con un rientro corretto.
TrimDirectiveWhitespaces è supportato solo dai contenitori servlet che supportano JSP 2.1 e successivi, o nel caso Tomcat, Tomcat 6 (e alcune versioni, ad esempio Tomcat 6.0.10, non lo implementano correttamente - non so degli altri). Sono disponibili ulteriori informazioni su trimDirectiveWhitespaces qui:
http://www.oracle.com/technetwork/articles/javaee/jsp-21-136414.html
e qui
Non direttamente quello che stai chiedendo, ma ciò che mi aiuta è inserire tag di commento HTML in modo intelligente attorno ai miei tag jsp e anche inserire spazi bianchi all'interno di un tag 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>
Puoi fare un ulteriore passo avanti e anche rimuovere le nuove righe (ritorni a capo) tra i tag html in fase di compilazione.
Ad esempio, modifica:
<p>Hello</p>
<p>How are you?</p>
in:
<p>Hello</p><p>How are you?</p>
Fallo, usa il maven-replacer-plugin
e configuralo 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>
Questo modificherà solo i JSP nella directory build e non toccherà i JSP nei sorgenti.
Potrebbe essere necessario adattare il percorso ( <filesToInclude>
) in cui si trovano i JSP.
Per favore, usa la funzione trim, esempio
fn:trim(string1)
Aggiungi / modifica il tuo catalina.properties
file Tomcat con
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
Vedi anche: https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7