この動作は、JSP2.1プロパティtrimDirectiveWhitespaces
をに設定することである程度排除することもできますtrue
。これは、次の方法で個々のJSPファイルで有効にできます。
<%@page trimDirectiveWhitespaces="true" %>
または、すべてのJSPファイルで次のエントリを使用します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>
JSP2.1より前のコンテナまたはTomcatなどの内部的な理由でこれを実際にサポートしていないJSP2.1コンテナでは、JspServlet
初期化パラメータについてドキュメントを参照する必要があります。たとえばTomcatの場合、Tomcatの:でtrimSpaces
init-paramをJspServlet
に設定することで構成することもできます。true
/conf/web.xml
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
どちらのアプローチも実際にはHTMLコードを「再フォーマット」しないことに注意してください。実際には、taglibsとscriptletによって残された空白のみをトリミングします。このSunの記事も参照してください。たとえば、次のようになります。
<ul>
<c:forEach items="${list}" var="item">
<li>${item}</li>
</c:forEach>
</ul>
..基本的には
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
</ul>
したがって、二重インデントを使用します。これを実際に回避するには、JSPタグが半分インデントされるようにコードを再フォーマットします。
<ul>
<c:forEach items="${list}" var="item">
<li>${item}</li>
</c:forEach>
</ul>
しかし、ここではJTidyFilterの方が簡単だと思います:)