26

JSPページでサーブレットによって設定された属性値を取得しようとしていますが、運が良かったのは。によるパラメータのみ${param}です。何が違うのかわかりません。簡単かもしれませんが、まだ管理できませんでした。

public void execute(HttpServletRequest request, HttpServletResponse response) {

    //there's no "setParameter" method for the "request" object
    request.setAttribute("attrib", "attribValue");

    RequestDispatcher rd = request.getRequestDispatcher("/Test.jsp");
    rd.forward(request,response);
}

JSPで「attribValue」を取得しようとしましたが、成功しませんでした。

<body>
    <!-- Is there another tag instead of "param"??? -->
    <p>Test attribute value: ${param.attrib}
</body>

すべてのプロセス(呼び出しページ、サーブレット、および宛先ページ)にパラメーターを渡すと、非常にうまく機能します。

4

4 に答える 4

33

すでにデフォルトの EL スコープで利用できるので、

${attrib}

すべきです。

スコープを明示的に指定したい場合 (つまり、EL はページ、リクエスト、セッション、およびアプリケーション スコープを順番に検索して、属性名に一致する最初の非 null 属性値を探します)、代わりにスコープ マップでそれを参照する必要があります。これは${requestScope}リクエストスコープ用です

${requestScope.attrib}

これは、まったく同じ名前の属性がページ スコープ内に存在する可能性がある場合にのみ役立ちます(ただし、そのような場合は通常、設計が不十分であることを示しています)。

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

于 2012-06-05T14:13:48.880 に答える
10

ELおそらく、構文と構文を比較するとscriptlet、概念を理解するのに役立ちます。

  • paramのようなものですrequest.getParameter()
  • requestScopeのようなものですrequest.getAttribute()

request attributeから伝える必要がありますrequest parameter

于 2015-01-28T03:29:59.203 に答える
2

式タグを使ってみましたか?

<%= request.getAttribute("attrib") %>
于 2012-06-05T13:56:07.753 に答える
2

スコープがリクエスト タイプの場合、 in request を使用して属性を設定し、in jsprequest.setAttribute(key,value)を使用して取得します。${requestScope.key}

于 2019-03-09T14:32:52.680 に答える