web-dev-qa-db-ja.com

ELを使用してJSPでリクエスト/セッション/ servletcontext属性を取得する方法

これは難しいことではありませんが、運がありません。

サーブレットのfooListをJSPで使用できるようにしたい。だから私はサーブレットで:

request.setAttribute("list", fooList);
RequestDispatcher dispatcher = 
  getServletContext().getRequestDispatcher("/myJsp.jsp");
dispatcher.forward(request, response);

次に、JSPで次のようにします。

<c:forEach var="post" items="${SOME_EL_HERE}">
    <!-- stuff -->
</c:forEach>

どこ SOME_EL_HEREは、requestに設定した属性を取得する式です。

何かご意見は?私の好みは、フレームワークを追加することで単純なタスクを複雑にすることではありませんが、戦略の変更に柔軟に対応できます。

31
Eric Wilson

ここで設定したように、これは単なる属性nameです。

_request.setAttribute("list", fooList);
_

したがって、これは_"list"_です。

_<c:forEach var="post" items="${list}">
_

詳細:ELはデフォルトで PageContext#findAttribute() を使用し、ページ、リクエスト、セッション、およびアプリケーションのスコープをスキャンして、指定された最初の次のnull以外の属性値を探します。属性名。

異なるスコープに同じ名前の複数の属性がある場合にスコープを明示的に指定する場合、通常のアプローチは_${pageScope}_、_${requestScope}_、_${sessionScope}_を使用することですまたは_${applicationScope}_。例えば。

_<c:forEach var="post" items="${requestScope.list}">
_

以下も参照してください。

46
BalusC