ベストプラクティス
理想的には<% // scriptlet %>
、JSP 内にブロックを含めないようにする必要があります。
JSP は、単純に Java コードを標準アクションとカスタム タグの背後に隠すことから、式言語、JSTL、そして現在は OGNL 式を使用して、アプリケーション スコープのいずれかで利用可能な事前入力された JavaBeans から結果を取得する (処理されたばかりの要求に対して) まで、大きく進化しました。 (セッション、リクエスト、ページなど) または高度なデータ ストア (Struts 2 の ValueStack など)。
したがって、適切な解決策は次のようになります(「ユーザー」参照が必要なため、EL を使用できません)
<jsp:useBean id="user" class="foo.User" /> <!-- scope="page" by default -->
このコード行を追加するTitle.jsp
と、新しいUser
Bean が作成され、page
スコープに追加されます。この同じコード行は、スコープから Bean をHeader.jsp
取得し、ファイルの残りの部分で使用できる名前の参照を与えます。 .User
page
user
しかし、残りの Java コードはタグ付きで書かれていないため、あまり意味がありません。したがって、<% // scriptlet %> ブロックの 1 つを使用して、2 つの JSP 間で Bean をリクエスト属性として単純に渡すこともできます。
<% // in Title.jsp
request.setAttribute ("user", new User());
%>
<% // in Header.jsp
User user = request.getAttribute ("user");
user.setName ("John Doe");
%>
答え
コード ベースが大きすぎて回収できない場合、ベスト プラクティスを使用してもまったく実用的ではありません。JSP 構文検証エラーを無視するように Eclipse IDE を構成するか、JSP フラグメントまたは特定のファイルとフォルダーに対してのみエラーを無効にすることができます。
ワークスペースで Web プロジェクトを選択して、 に進みますProject > Properties > Validation > JSP Syntax
。次に、以下に示すようEnable project specific settings
にオフにします。Validate JSP fragments

JSP フラグメントは.jspf
、JSP/HTML セグメントを含むファイルであり、ヘッダー タグを開いたり閉じたりする必要はありません (もちろんヘッダーまたはフッター フラグメントでない限り)。したがって、.jspf
Eclipse がファイルをフラグメントとして認識する (検証しない) ようにするには、ファイルの名前を に変更する必要があります。主な利点は次のとおりです。
- ファイルは、フォルダー構造のどこにでも置くことができます
- 拡張子は、それがインクルードであることを明確に示しています
- 新しいフラグメントは自動的に識別されます
インクルード ファイルの数が膨大であるか、何らかの理由で名前を変更できない場合、次善の策は、それらを別のフォルダー ( などincludes
) に移動し、そのフォルダー自体を JSP 構文検証から除外することです。
再度、[プロジェクト] > [プロパティ] > [検証] に移動し、プロジェクト固有の設定を有効にして、設定[...]
にアクセスするための参照タイプ ボタンをクリックしJSP Syntax Validator
ます。

ここでは、最初に を作成してExclude Group
から、フォルダ(画像のWebContent/includesなど) を JSP 構文検証からAdd Rule
除外します。

これで、Eclipse は、この include フォルダーにドロップされた JSP ファイルのエラーを報告しなくなりました。個々のファイルにも同じアプローチを使用できますが、それがどれほど実用的かは、そのようなフラグメントがいくつあるかによって異なります。
参考文献:
JSP ファイルで Java コードを回避するには?