[Java] Tomcat 5.5.27 にバージョンアップすると JSP でエラーが... | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

Tomcat を 5.5.27 にバージョンアップすると 一部の JSP で以下のようなエラーが出るようになりました。

Attribute value "~" is quoted with " which must be escaped when used within the value ...

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

そのため、既存の JSP の中にクォートをエスケープしていないものがあった場合、上記のようなエラーが発生するようです。

このエラーを解消するには、JSP ファイルを修正するのが筋ですが、既に稼働中のシステムについては、修正とテストにかなりの労力を必要とする上に、修正ミスによって不具合が発生するリスクもあります。

幸いなことに、このエラーは、システムプロパティ org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING に false を設定して、旧バージョン互換の動作にすることで解消することもできるようですので、既に稼働中のシステムの場合は、こちらの方法で対応したほうがリスクが少なくてよさそうです。

ちなみに、システムプロパティ org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING は、

  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 を設定する。
のいずれかの方法で設定できます。