Як я можу викреслити зайвий пробіл з виводу сторінок jsp? Чи є перемикач, який я можу переключити на свій web.xml? Чи є конкретна настройка для Tomcat?
Як я можу викреслити зайвий пробіл з виводу сторінок jsp? Чи є перемикач, який я можу переключити на свій web.xml? Чи є конкретна настройка для Tomcat?
Відповіді:
Існує директива 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>
На жаль, якщо у вас є необхідний простір, можливо, знадобиться і смужка, тому вам може знадобитися місце, яке не порушується, в деяких місцях.
web.xml
: <init-param> <param-name> trimSpaces </param-name> <param-value> true </param-value> </init-param>
Якщо ваш сервлет-контейнер не підтримує trimDirectiveWhitespaces
властивість JSP 2.1 , вам потрібно ознайомитися з його 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 у правильному відступі.
TrimDirectiveWhitespaces підтримується лише контейнерами сервлетів, які підтримують JSP 2.1 і після, або у випадку або Tomcat, Tomcat 6 (а деякі версії, наприклад, Tomcat 6.0.10, не реалізують його належним чином - не знаю про інші). Більше інформації про trimDirectiveWhitespaces тут:
http://www.oracle.com/technetwork/articles/javaee/jsp-21-136414.html
і тут
Не безпосередньо те, що ви просите, але те, що мені допомагає, - це вміло розміщувати теги 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>
Ви можете піти на крок далі, а також видалити нові рядки (повернення каретки) між 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.
Будь ласка, використовуйте приклад фуніціон, наприклад
fn:trim(string1)
Додайте / відредагуйте catalina.properties
файл tomcat за допомогою
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
Дивіться також: https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7