¿Cómo puedo eliminar los espacios en blanco adicionales de la salida de las páginas jsp? ¿Hay algún interruptor que pueda activar en mi web.xml? ¿Existe una configuración específica de Tomcat?
¿Cómo puedo eliminar los espacios en blanco adicionales de la salida de las páginas jsp? ¿Hay algún interruptor que pueda activar en mi web.xml? ¿Existe una configuración específica de Tomcat?
Respuestas:
Hay una directiva trimWhiteSpaces que debería lograr esto,
En su JSP:
<%@ page trimDirectiveWhitespaces="true" %>
O en la sección jsp-config su web.xml (tenga en cuenta que esto funciona a partir de la especificación 2.5 del servlet):
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
</jsp-property-group>
</jsp-config>
Desafortunadamente, si tiene un espacio requerido, es posible que también necesite quitarlo, por lo que es posible que necesite un espacio que no se rompa en algunos lugares.
web.xml
: <init-param> <param-name> trimSpaces </param-name> <param-value> true </param-value> </init-param>
Si su servletcontainer no admite la trimDirectiveWhitespaces
propiedad JSP 2.1 , debe consultar su JspServlet
documentación para conocer los parámetros de inicialización. En, por ejemplo , Tomcat , también puede configurarlo estableciendo trimSpaces
init-param en true
in for JspServlet
en Tomcat /conf/web.xml
:
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
Una alternativa completamente diferente es JTidyFilter . No solo recorta los espacios en blanco, sino que también formatea HTML con una sangría correcta.
TrimDirectiveWhitespaces solo es compatible con contenedores de servlet que admiten JSP 2.1 y posteriores, o en el caso de Tomcat, Tomcat 6 (y algunas versiones, por ejemplo, Tomcat 6.0.10, no lo implementan correctamente, no sé sobre los demás). Hay más información sobre trimDirectiveWhitespaces aquí:
http://www.oracle.com/technetwork/articles/javaee/jsp-21-136414.html
y aquí
No es directamente lo que está pidiendo, pero lo que me ayuda es poner etiquetas de comentarios HTML de una manera inteligente alrededor de mis etiquetas jsp, y también poner espacios en blanco dentro de una etiqueta 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>
Puede ir un paso más allá y también eliminar nuevas líneas (retornos de carro) entre las etiquetas html en el momento de la compilación.
Por ejemplo, cambio:
<p>Hello</p>
<p>How are you?</p>
dentro:
<p>Hello</p><p>How are you?</p>
Haz eso, usa maven-replacer-plugin
y configúralo en 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>
Esto solo modificará las JSP en el directorio de compilación y no tocará las JSP en sus fuentes.
Es posible que deba adaptar la ruta ( <filesToInclude>
) donde se encuentran sus JSP.
Por favor, use la función de recorte, ejemplo
fn:trim(string1)
Agregue / edite su catalina.properties
archivo tomcat con
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
Véase también: https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7