117

jspページの出力から余分な空白を取り除くにはどうすればよいですか?web.xmlで切り替えることができるスイッチはありますか?Tomcat固有の設定はありますか?

4

9 に答える 9

180

これを実現する必要がある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>

残念ながら、必要なスペースがある場合は、それを取り除く必要があるかもしれません。そのため、場所によっては、壊れないスペースが必要になる場合があります。

于 2008-10-16T14:18:06.500 に答える
28

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

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

完全に異なる代替手段はJTidyFilterです。空白を削除するだけでなく、HTML を正しいインデントにフォーマットします。

于 2010-04-10T20:16:13.563 に答える
4

あなたが求めているものとは直接関係ありませんが、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>
于 2011-10-01T22:52:40.850 に答える
4

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

于 2010-04-10T10:22:38.003 に答える
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 には影響しません。

<filesToInclude>JSP が配置されているパス ( ) を変更する必要がある場合があります。

于 2017-01-04T12:19:56.960 に答える
1

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

fn:trim(string1)
于 2019-06-29T02:43:53.987 に答える
0

次のコマンドでTomcatcatalina.propertiesファイルを追加/編集します

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

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

于 2012-12-28T19:15:55.383 に答える