web-dev-qa-db-ja.com

jsp出力から空白を削除

Jspページの出力から余分な空白を削除するにはどうすればよいですか? web.xmlで反転できるスイッチはありますか? Tomcat固有の設定はありますか?

108
Seth Weiner

これを実現するtrimWhiteSpacesディレクティブがあり、

JSPで:

<%@ page trimDirectiveWhitespaces="true" %>

または、web.xmlのjsp-configセクションで(これはサーブレット仕様2.5以降で機能することに注意してください)。

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

残念ながら、必要なスペースがある場合は、ストリップも必要になる可能性があります。そのため、一部の場所には中断しないスペースが必要になる場合があります。

170
Rontologist

サーブレットコンテナがJSP 2.1 trimDirectiveWhitespacesプロパティをサポートしていない場合、初期化パラメータについてはJspServletドキュメントを参照する必要があります。たとえば Tomcat では、Tomcatの/conf/web.xmltrimSpacesに対してtrue init-paramをJspServletに設定することで設定することもできます。

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

完全に異なる選択肢は JTidyFilter です。空白を切り取るだけでなく、正しいインデントでformatsHTMLもトリミングします。

27
BalusC

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

4
Simon B

タグを使用している場合は、そこにも適用できます。

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

そして、あなたのjspで:

<%@ page trimDirectiveWhitespaces="true" %>
3
Andres

直接あなたが求めているものではありませんが、私のjspタグの周りに巧妙な方法でHTMLコメントタグを配置し、またサーブレットタグ(<%%>)内に空白を配置するのに役立ちます:

${"<!--"}
<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>
2
redolent

トリム機能を使用してください、例

fn:trim(string1)
1

さらに一歩進んで、ビルド時に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は変更されません。

JSPが置かれているパス(<filesToInclude>)を調整する必要がある場合があります。

0
yglodt

Tomcatを追加/編集しますcatalina.propertiesファイル

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

参照: https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7

0