JSPページで「%>」リテラルを使いたいのにエラーが発生する――正しいエスケープ方法を解説
JSPページで「%>」リテラルを安全に表示する方法
JSPページの中で、スクリプトレットの終了タグである「%>」を文字としてそのまま表示したいケースがあります。しかし、そのまま記述すると、JSPコンテナがそれをスクリプトレットの終了と誤認識し、コンパイルエラーが発生してしまいます。
解決策:バックスラッシュでエスケープする
最もシンプルな解決策は、バックスラッシュ(\)を使ってエスケープすることです。「%>」を「%\>」と書き換えるだけで、JSPトランスレータはこれをリテラル文字列として扱い、実際に出力される際には自動的に元の「%>」へと変換されます。
以下のサンプルコードでは、見出し部分で「%\>」によってエスケープした構文を表示し、本文では通常どおりスクリプトレットを使って現在日時を出力しています。
<html>
<head>
<title>コメントのテスト</title>
</head>
<body>
<h2>構文: <%= (new java.util.Date()).toLocaleString() %\></h2>
<p>今日の日付: <%= (new java.util.Date()).toLocaleString()%></p>
</body>
</html>
ブラウザへの表示結果
構文: <%= (new java.util.Date()).toLocaleString() %> 今日の日付: 2025/01/15 14:23:05
この結果から、エスケープされた「%\>」は画面上では普通の「%>」として表示される一方、下の行のスクリプトレットは正しくJavaコードとして実行されていることがわかります。
補足: 日本語Windows環境では、バックスラッシュは円記号(¥)として入力・表示されることがありますが、動作は同じです。このエスケープ手法は、技術ドキュメントやチュートリアルのように、JSPのコード例をWebページ上にそのまま掲載したい場合に特に役立ちます。
-
JSPでパラメータ化されたSQLクエリを使う方法|sql:paramタグの基本と実践例
<sql:param> タグは、<sql:query> タグや <sql:update> タグの入れ子(ネスト)アクションとして使用され、SQL文内の値プレースホルダー(?)に実際の値を渡すためのものです。null値が指定された場合は、プレースホルダーに SQL NULL が設定されます。 属性一覧 <sql:param> タグには、以下の属性が用意されています。 属性説明必須デフォルト値 value設定するパラメータの値いいえタグのボディ(本文) 実行例 基本的な概念を理解するために、まず TEST データベース内に Employe
-
「このページのスクリプトでエラーが発生しました」エラーの原因と5つの解決方法
「このページのスクリプトでエラーが発生しました」というスクリプトエラーは、今でも多くのインターネットユーザーを悩ませています。この問題はWebブラウザだけにとどまらず、Internet Explorer(IE)のスクリプトを利用するさまざまなアプリケーションでも報告されています。また、Windows 7、Windows 8.1、Windows 10など、最近のWindowsバージョンすべてで発生が確認されており、特定のOSバージョンに限定された問題ではありません。「このページのスクリプトでエラーが発生しました」エラーの主な原因本記事では、多数のユーザーレポートと、実際に問題解決に成功した修復方