Tomcat5.5.27、6.0.18からJSPのスクリプトレットなどの中でクォートを使用する際にエスケープが必要になった

Tomcat の v5.5.27、v6.0.18にて
JSPスクリプトレット(<%= %>で囲まれる部分)でクォートにエスケープ処理が必要に!


45015 – Quoting in attributes


つまり、以下は構文エラー

<%-- ILLEGAL--%>
<html:link href="<%= "XXX.do?param=" + request.getAttribute("param") %>"/>


正しくは

<%-- CORRECT --%>
<html:link href="<%= "XXX.do?param=" + request.getAttribute(\"param\") %>"/>


既存システムのJSP全てをチェック!全画面再テスト!
なんてことはやってられんので以下の方法で回避〜♪


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

システムプロパティ「org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING」に「false」を設定
設定方法は以下のどれかを設定すればOK

  1. VMの引数に -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false を追加
  2. CATALINA_OPTS 環境変数に -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false を設定
  3. $TOMCAT_HOME/conf/catalina.properties に org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false を追加