Jak mogę usunąć dodatkowe białe znaki z danych wyjściowych stron jsp? Czy istnieje przełącznik, który mogę włączyć w moim pliku web.xml? Czy istnieje specyficzne ustawienie Tomcat?
Jak mogę usunąć dodatkowe białe znaki z danych wyjściowych stron jsp? Czy istnieje przełącznik, który mogę włączyć w moim pliku web.xml? Czy istnieje specyficzne ustawienie Tomcat?
Odpowiedzi:
Istnieje dyrektywa trimWhiteSpaces, która powinna to zrobić,
W Twoim JSP:
<%@ page trimDirectiveWhitespaces="true" %>
Lub w sekcji jsp-config plik web.xml (zauważ, że działa to począwszy od specyfikacji serwletu 2.5.):
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
</jsp-property-group>
</jsp-config>
Niestety, jeśli masz wymaganą przestrzeń, może to również wymagać rozebrania, więc w niektórych lokalizacjach możesz potrzebować niezłamanej przestrzeni.
web.xml
: <init-param> <param-name> trimSpaces </param-name> <param-value> true </param-value> </init-param>
Jeśli twój servletcontainer nie obsługuje właściwości JSP 2.1 trimDirectiveWhitespaces
, to musisz zapoznać się z jego JspServlet
dokumentacją, aby znaleźć parametry inicjalizacji. Na przykład Tomcat , możesz go również skonfigurować, ustawiając trimSpaces
init-param na true
in for JspServlet
w Tomcat's /conf/web.xml
:
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
Zupełnie inną alternatywą jest JTidyFilter . Nie tylko przycina białe znaki, ale także formatuje HTML w odpowiednim wcięciu.
TrimDirectiveWhitespaces jest obsługiwany tylko przez kontenery serwletów, które obsługują JSP 2.1 i późniejsze, lub w przypadku Tomcat, Tomcat 6 (i niektóre wersje, np. Tomcat 6.0.10, nie implementują go poprawnie - nie wiem o innych). Więcej informacji o trimDirectiveWhitespaces znajdziesz tutaj:
http://www.oracle.com/technetwork/articles/javaee/jsp-21-136414.html
i tu
Nie bezpośrednio to, o co prosisz, ale pomaga mi umieszczanie znaczników komentarzy HTML w sprytny sposób wokół moich tagów jsp, a także umieszczanie spacji wewnątrz tagu serwletu (<%%>):
${"<!--"}
<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>
Możesz pójść o krok dalej, a także usunąć znaki nowej linii (powrót karetki) między tagami HTML w czasie kompilacji.
Np. Zmiana:
<p>Hello</p>
<p>How are you?</p>
w:
<p>Hello</p><p>How are you?</p>
Zrób to, użyj maven-replacer-plugin
i skonfiguruj w 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>
Spowoduje to jedynie zmodyfikowanie stron JSP w katalogu kompilacji i nie wpłynie na strony JSP w źródłach.
Może być konieczne dostosowanie ścieżki ( <filesToInclude>
), w której znajdują się strony JSP.
Proszę skorzystać z funkcji przycinania, na przykład
fn:trim(string1)
Dodaj / edytuj catalina.properties
plik tomcat za pomocą
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
Zobacz też: https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7