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……
以上。まだ誰もこの地雷を踏んでいないみたいなので、一応。