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>
すべてのプロセス(呼び出しページ、サーブレット、および宛先ページ)にパラメーターを渡すと、非常にうまく機能します。
デフォルトのELスコープで既に利用可能ですので、
${attrib}
する必要があります。
スコープを明示的に指定する場合(ELは、ページ、リクエスト、セッション、およびアプリケーションスコープを順に検索して、属性名に一致する最初の非null属性値を検索します)、代わりにスコープマップで参照する必要があります。 ${requestScope}
リクエストスコープ
${requestScope.attrib}
これは、おそらくページスコープ内に完全に同じ名前の属性がある場合にのみ有用です。結局)。
EL
構文とscriptlet
構文を比較すると、概念を理解するのに役立ちます。
param
はrequest.getParameter()
のようなものですrequestScope
はrequest.getAttribute()
のようなものですrequest attribute
from request parameter
。
式タグを使用してみましたか?
<%= request.getAttribute("attrib") %>
スコープがリクエストタイプの場合、requestでrequest.setAttribute(key、value)を使用して属性を設定し、jspで$ {requestScope.key}を使用して取得します。