Как я могу удалить лишние пробелы из вывода страниц jsp? Есть ли переключатель, который я могу перевернуть на свой web.xml? Существует ли конкретная настройка Tomcat?
Полоса пробела от выхода jsp
Ответ 1
Существует директива 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>
К сожалению, если у вас есть необходимое пространство, возможно, потребуется полоса, поэтому вам может понадобиться нераспаковывающееся пространство в некоторых местах.
Ответ 2
Если ваш servletcontainer не поддерживает свойство JSP 2.1 trimDirectiveWhitespaces
, вам необходимо проконсультироваться с его документацией JspServlet
для любых параметров инициализации. Например, Tomcat, вы также можете настроить его, установив trimSpaces
init-param в true
для JspServlet
в Tomcat /conf/web.xml
:
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
Совершенно другая альтернатива - это JTidyFilter. Он не только выравнивает пробелы, но также форматирует HTML в правильном отступе.
Ответ 3
Интерфейсы trimDirectiveWhitespaces поддерживаются только контейнерами сервлетов, которые поддерживают JSP 2.1 и после, или в случае Tomcat, Tomcat 6 (и некоторые версии, например Tomcat 6.0.10, не реализуют его правильно - не знают о других). Там больше информации о trimDirectiveWhitespaces:
http://www.oracle.com/technetwork/articles/javaee/jsp-21-136414.html
и здесь
Ответ 4
Если вы используете теги, вы также можете подать заявку:
<%@ tag description="My Tag" trimDirectiveWhitespaces="true" %>
И на вашем jsp:
<%@ page trimDirectiveWhitespaces="true" %>
Ответ 5
Не то, что вы просите, но то, что помогает мне, - это ярлык 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>
Ответ 6
Добавьте/отредактируйте файл tomcat catalina.properties
с помощью
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
Смотрите также: https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7
Ответ 7
Вы можете пойти еще на один шаг, а также удалить новые строки (возврат каретки) между тегами 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>>\s*<</token>
<value>><</value>
<regexFlags>
<regexFlag>MULTILINE</regexFlag>
</regexFlags>
</configuration>
</execution>
</executions>
</plugin>
Это изменит только JSP в каталоге build и не коснется JSP в ваших источниках.
Вам может потребоваться адаптировать путь (<filesToInclude>
), где находятся ваши JSP.
Ответ 8
Пожалуйста, используйте функцию отделки, пример
fn:trim(string1)