4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

tomcat8.5でSTRICT_QUOTE_ESCAPINGの設定をCATALINA_OPTSに書いても反映されない

Posted at

tomcat5.5くらいからjspのスクリプトレット内でクォートを使おうとするとエスケープしないといけなくなっていたが
これをいちいちエスケープするのは面倒なので、
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
と設定すればそのまま使えていた。
参考:http://d.hatena.ne.jp/guangda/20091215/1260836855

自分がいた環境では2の「CATALINA_OPTS」に設定を追加していたが、tomcat8.5にした際に本設定を追加しても効かず500エラーが発生!
プロセスを見ても引数として設定もされているが効いていなかった。

調査中にふとweb.xmlの差分を見てみると
tomcat8まで

  <!--   strictQuoteEscaping When scriptlet expressions are used for        -->
  <!--                       attribute values, should the rules in JSP.1.6  -->
  <!--                       for the escaping of quote characters be        -->
  <!--                       strictly applied? [true]                       -->
  <!--                       The default can be changed with the            -->
  <!--                       org.apache.jasper.compiler.Parser.             -->
  <!--                       STRICT_QUOTE_ESCAPING system property.         -->

tomcat8.5から

  <!--   strictQuoteEscaping When scriptlet expressions are used for        -->
  <!--                       attribute values, should the rules in JSP.1.6  -->
  <!--                       for the escaping of quote characters be        -->
  <!--                       strictly applied? [true]                       -->

?!この部分の記載が消えている事が判明

  <!--                       The default can be changed with the            -->
  <!--                       org.apache.jasper.compiler.Parser.             -->
  <!--                       STRICT_QUOTE_ESCAPING system property.         -->

そこでweb.xml側のこのコメントの後に

<servlet>
  <servlet-name>jsp</servlet-name>
  <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
  ~略~
  <init-param>
    <param-name>strictQuoteEscaping</param-name>
    <param-value>false</param-value>
  </init-param>
  ~略~
</servlet>

を追加した所、500エラーが消えた( ゚д゚)wow……

以上。まだ誰もこの地雷を踏んでいないみたいなので、一応。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?