JSTL タグ自体は、 JSP/EL 仕様およびJSTL ドキュメントに準拠して使用する場合、デバッグする必要はありません。あなたが見つけた答えでは、「デバッグ可能性」は、サーブレット、フィルター、エンティティ、EJBなどのJavaクラスに置き換える必要があるビジネスロジックのJavaコードのコンテキストでのみ意味され、必要なプレゼンテーションロジックのJavaコードではありませんif/else
ブロック、for
ループ、HTML エスケープ、日付/数値の書式設定、文字列操作関数などのJSTL タグに置き換えられます。
ただし、根本原因を明らかに JSTL タグに突き止めた問題に直面した場合は、適切に使用されていればJSTL ドキュメントを読み直してください。次のテンプレートを使用して、関心のある EL 変数のダンプを実行することもできます。
<h2>Request headers</h2>
<dl>
<c:forEach items="${headerValues}" var="entry">
<dt><c:out value="${entry.key}" /></dt>
<dd>
<c:forEach items="${entry.value}" var="headerValue" varStatus="loop">
<c:out value="${headerValue}" />${not loop.last ? ', ' : ''}
</c:forEach>
</dd>
</c:forEach>
</dl>
<h2>Request params</h2>
<dl>
<c:forEach items="${paramValues}" var="entry">
<dt><c:out value="${entry.key}" /></dt>
<dd>
<c:forEach items="${entry.value}" var="paramValue" varStatus="loop">
<c:out value="${paramValue}" />${not loop.last ? ', ' : ''}
</c:forEach>
</dd>
</c:forEach>
</dl>
<h2>Request scope</h2>
<dl>
<c:forEach items="${requestScope}" var="entry">
<dt><c:out value="${entry.key}" /></dt>
<dd><c:out value="${entry.value}" /></dd>
</c:forEach>
</dl>
<h2>Session scope</h2>
<dl>
<c:forEach items="${sessionScope}" var="entry">
<dt><c:out value="${entry.key}" /></dt>
<dd><c:out value="${entry.value}" /></dd>
</c:forEach>
</dl>
<h2>Application scope</h2>
<dl>
<c:forEach items="${applicationScope}" var="entry">
<dt><c:out value="${entry.key}" /></dt>
<dd><c:out value="${entry.value}" /></dd>
</c:forEach>
</dl>
必要に応じて、アクセス キーを介して開かれ、開発モード中にのみレンダリングされるポップアップ パネルにラップすることができます (Java EE の MVC フレームワーク JSF には、 のフレーバーで非常に類似したものがあります<ui:debug>
)。
無駄な場合は、問題を可能な限り最小の JSP ファイルに絞り込み、コピーして貼り付けて実行するだけで問題全体を再現できます (このような例では、必要なビジネス ロジックや、スクリプトレットにrequest.setAttribute()
行などを入れることができます。 JSP ファイルの最上部に配置されます。このようなプロトタイピングは、スクリプトレットの正当な使用例の 1 つです)。
その SSCCE に基づいてそれでもわからない場合は、Stack Overflow に質問として投稿してください。適切に入力すると、1 日以内に回答が得られる可能性があります。単純なタイプミスや構文/論理エラーに要約されることが多い場合でも、驚かないでください。