jspページの出力から余分な空白を取り除くにはどうすればよいですか?web.xmlで切り替えることができるスイッチはありますか?Tomcat固有の設定はありますか?
9 に答える
これを実現する必要がある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>
残念ながら、必要なスペースがある場合は、それを取り除く必要があるかもしれません。そのため、場所によっては、壊れないスペースが必要になる場合があります。
サーブレットコンテナが JSP 2.1 プロパティをサポートしていない場合は、初期化パラメータについてドキュメントtrimDirectiveWhitespaces
を参照する必要があります。JspServlet
たとえばTomcatでは、 Tomcat のでtrimSpaces
init-param をtrue
in に設定することで同様に構成できます。JspServlet
/conf/web.xml
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
完全に異なる代替手段はJTidyFilterです。空白を削除するだけでなく、HTML を正しいインデントにフォーマットします。
あなたが求めているものとは直接関係ありませんが、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>
trimDirectiveWhitespaces は、JSP 2.1 以降、または Tomcat の場合は Tomcat 6 をサポートするサーブレット コンテナでのみサポートされます (また、Tomcat 6.0.10 などの一部のバージョンでは適切に実装されていないため、他のバージョンについては不明です)。ここに trimDirectiveWhitespaces に関する詳細情報があります:
http://www.oracle.com/technetwork/articles/javaee/jsp-21-136414.html
そしてここ
さらに一歩進んで、ビルド時に 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 のみを変更し、ソース内の JSP には影響しません。
<filesToInclude>
JSP が配置されているパス ( ) を変更する必要がある場合があります。
トリム機能を使用してください、例
fn:trim(string1)
次のコマンドでTomcatcatalina.properties
ファイルを追加/編集します
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
参照:https ://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7