コンピュータクワガタ

かっぱのかっぱによるコンピュータ関連のサイトです

JSPとELを見直そう No. 2 trimDirectiveWhitespaces

Java EE 5から、trimDirectiveWhitespacesがpageディレクティブで設定できるようになりました。

これをtrueに設定することで、ディレクティブを宣言した行が空行として出力されるのを防ぐことができます。

具体的に見ていきます。次のようなJSPを用意します。最初に意味のないpageディレクティブでimportを宣言しています。

<%@page trimDirectiveWhitespaces="false" %>
<%@page import="java.util.Map" %>
<%@page import="java.util.List" %>
<%@page contentType="text/html; charset=utf-8" %><%--
--%><!DOCTYPE html>
<html lang="ja">
 <head>
  <meta charset="utf-8">
  <title>JSP</title>
 </head>
 <body>
余計な空白が先頭に出る
 </body>
</html>

HTMLを見ると次のように先頭に空行が出力されます。



<!DOCTYPE html>
<html lang="ja">
 <head>
  <meta charset="utf-8">
  <title>JSP</title>
 </head>
 <body>
余計な空白が先頭に出る
 </body>
</html>

これはいただけないので、<%@page trimDirectiveWhitespaces="true" %>として再度HTMLを確認すると先頭の空行がなくなります。

ほとんどの場合、これはtrueでいいと思うので、web.xmljsp-configのtrim-directive-whitespacesをtrueにするとurl-patternのJSPすべてに適用できます。

 <jsp-config>
  <jsp-property-group>
   <url-pattern>*.jsp</url-pattern>
   <el-ignored>false</el-ignored>
   <page-encoding>utf-8</page-encoding>
   <scripting-invalid>true</scripting-invalid>
   <include-prelude>/WEB-INF/jsp/common/common.jsp</include-prelude>
   <trim-directive-whitespaces>true</trim-directive-whitespaces>
  </jsp-property-group>
 </jsp-config>

ソースは https://github.com/kuwalab/JSP にあります。

まとめ http://kuwalab.hatenablog.jp/entry/JSP
最初 http://kuwalab.hatenablog.jp/entry/JSP/01
前回 http://kuwalab.hatenablog.jp/entry/JSP/01
次回 http://kuwalab.hatenablog.jp/entry/JSP/03