2

JSP コードに奇妙な点がありました。二重のバックスラッシュの後にドル記号またはパーセント記号が続くと、単一のバックスラッシュ (プラス記号) に変換されるようです。

つまり、次の JSP です。

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
\\#
\\$
\\%
\\^

次のようにレンダリングされます。

\\#
\$
\%
\\^

JDK 1.6.0_02 と Apache Tomcat 5.5.23 および 6.0.16 (2 台のマシン) を使用しています。

これは Tomcat のバグですか? JDK? それとも、JSP 仕様のあいまいなオプションに準拠していますか? 仕様を調べてみましたが、有用なものは見つかりませんでした。

回避策はかなり簡単です。バグがある場合に備えて、バグを報告すると思いました。

編集:へー、stackoverflowもバックスラッシュをマングルします

4

1 に答える 1

1

\$ は仕様に含まれています (セクション JSP.1.6)。「ページで EL が有効になっている場合のみ....、リテラル $ を \$ で引用できます。

\% は、おそらく「リテラル <% が <\% で引用されている」ためです。パーサーが \% の前の < をチェックしていないと思われます。

于 2009-01-08T16:14:14.137 に答える