Como posso remover espaços em branco extras da saída das páginas jsp? Existe uma opção que posso ativar no meu web.xml? Existe uma configuração específica do Tomcat?
Como posso remover espaços em branco extras da saída das páginas jsp? Existe uma opção que posso ativar no meu web.xml? Existe uma configuração específica do Tomcat?
Respostas:
Há uma diretiva trimWhiteSpaces que deve fazer isso,
Em seu JSP:
<%@ page trimDirectiveWhitespaces="true" %>
Ou na seção jsp-config seu web.xml (observe que isso funciona a partir da especificação 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>
Infelizmente, se você tiver um espaço necessário, também pode ser necessário removê-lo, portanto, pode ser necessário um espaço ininterrupto em alguns locais.
web.xml
: <init-param> <param-name> trimSpaces </param-name> <param-value> true </param-value> </init-param>
Se seu servletcontainer não suportar a trimDirectiveWhitespaces
propriedade JSP 2.1 , você precisará consultar sua JspServlet
documentação para quaisquer parâmetros de inicialização. Por exemplo , no Tomcat , você também pode configurá-lo definindo trimSpaces
init-param como true
in for JspServlet
no Tomcat /conf/web.xml
:
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
Uma alternativa completamente diferente é o JTidyFilter . Ele não apenas corta os espaços em branco, mas também formata o HTML em um recuo correto.
O trimDirectiveWhitespaces é suportado apenas por contêineres de servlet que suportam JSP 2.1 e posterior, ou no caso de Tomcat, Tomcat 6 (e algumas versões, por exemplo, Tomcat 6.0.10 não o implementam corretamente - não sei sobre os outros). Há mais informações sobre trimDirectiveWhitespaces aqui:
http://www.oracle.com/technetwork/articles/javaee/jsp-21-136414.html
e aqui
Não diretamente o que você está pedindo, mas o que me ajuda é colocar tags de comentário HTML de uma maneira inteligente em torno de minhas tags jsp e também colocar um espaço em branco dentro de uma tag 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>
Você pode ir um passo adiante e também remover novas linhas (retornos de carro) entre as tags html no momento da construção.
Ex: mudança:
<p>Hello</p>
<p>How are you?</p>
para dentro:
<p>Hello</p><p>How are you?</p>
Faça isso, use o maven-replacer-plugin
e configure-o em 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>
Isso apenas modificará os JSPs no diretório de construção e não afetará os JSPs em suas fontes.
Pode ser necessário adaptar o caminho ( <filesToInclude>
) onde seus JSPs estão localizados.
Por favor, use a função trim, exemplo
fn:trim(string1)
Adicionar / editar seu catalina.properties
arquivo tomcat com
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
Veja também: https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7