Убрать пробелы из вывода jsp - PullRequest
105 голосов
/ 16 октября 2008

Как я могу удалить лишние пробелы из вывода страниц jsp? Можно ли переключить мой web.xml? Есть ли особые настройки для Tomcat?

Ответы [ 7 ]

167 голосов
/ 16 октября 2008

Существует директива trimWhiteSpaces, которая должна выполнить это,

В вашем JSP:

<%@ page trimDirectiveWhitespaces="true" %>

Или в разделе jsp-config вашего web.xml (обратите внимание, что это работает, начиная со спецификации 2.5 сервлета):

<jsp-config>
  <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <trim-directive-whitespaces>true</trim-directive-whitespaces>
  </jsp-property-group>
</jsp-config>

К сожалению, если у вас есть необходимое пространство, возможно, потребуется также удалить его, поэтому в некоторых местах вам может понадобиться неразрывное пространство.

27 голосов
/ 11 апреля 2010

Если ваш servletcontainer не поддерживает свойство JSP 2.1 trimDirectiveWhitespaces, то вам необходимо обратиться к его документации JspServlet для любых параметров инициализации. Например, Tomcat , вы также можете настроить его, установив trimSpaces init-param в true in для JspServlet в Tomcat /conf/web.xml:

<init-param>
    <param-name>trimSpaces</param-name>
    <param-value>true</param-value>
</init-param>

Совершенно другой альтернативой является JTidyFilter . Он не только удаляет пробелы, но и форматирует HTML в правильном отступе.

4 голосов
/ 10 апреля 2010

trimDirectiveWhitespaces поддерживается только сервлет-контейнерами, поддерживающими JSP 2.1 и более поздние версии, или в случае с Tomcat, Tomcat 6 (и некоторые версии, например, Tomcat 6.0.10, не реализуют его должным образом - о других не знают ). Больше информации о trimDirectiveWhitespaces здесь:

http://www.oracle.com/technetwork/articles/javaee/jsp-21-136414.html

и здесь

http://raibledesigns.com/rd/entry/trim_spaces_in_your_jsp1

3 голосов
/ 22 февраля 2017

Если вы используете теги, вы также можете применить там:

<%@ tag description="My Tag" trimDirectiveWhitespaces="true" %>

А на вашем jsp:

<%@ page trimDirectiveWhitespaces="true" %>
2 голосов
/ 02 октября 2011

Не совсем то, что вы просите, но что помогает мне, так это грамотно размещать теги комментариев HTML вокруг моих тегов jsp, а также помещать пробелы внутри тега сервлета (<%%>):

${"<!--"}
<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>
0 голосов
/ 04 января 2017

Вы можете пойти еще дальше, а также удалить переводы строк (возврат каретки) между тегами html во время сборки.

например. изменить:

<p>Hello</p>
<p>How are you?</p>

в

<p>Hello</p><p>How are you?</p>

Сделайте это, используйте maven-replacer-plugin и установите его в 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>&gt;\s*&lt;</token>
                <value>&gt;&lt;</value>
                <regexFlags>
                    <regexFlag>MULTILINE</regexFlag>
                </regexFlags>
            </configuration>
        </execution>
    </executions>
</plugin>

Это изменит только JSP в каталоге сборки и не затронет JSP в ваших источниках.

Возможно, вам потребуется изменить путь (<filesToInclude>), в котором находятся ваши JSP.

0 голосов
/ 28 декабря 2012

Добавьте / отредактируйте ваш файл tomcat catalina.properties с помощью

org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false

Смотри также: https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7

...