11

jstl 変数が jsp のリクエスト スコープに設定されている

<c:set var="name" value="Tiger" scope="request" />

この変数は、この jsp に含まれる jspf からアクセスされます。さて、これら2つの方法で変数にアクセスすることに違いはありますか?

1) <c:out value="${name}" />
2) <c:out value="${requestScope.name}" />

requestScope を使用する場合

4

2 に答える 2

27

オブジェクトをページ、セッション、またはアプリケーションスコープからではなく、絶対にリクエストから取得したい場合は、 requestScope を使用します。確かに、を使用すると、ページ、リクエスト、セッション、アプリケーションの順に属性${name}が検索されます。name

JSP 内の他のコードがnameページ スコープ内の属性を設定するとします。しかし、リクエスト内の名前にアクセスしたい場合は、requestScope を使用する必要があります。

nameセッションに属性があるとしましょう。requestScope.nameJSP がリクエスト スコープで name 属性を設定するのを忘れた場合、使用しないとセッション スコープの名前が返されます。

JSP フラグメントの目的が、囲んでいる JSP に設定されている何かにアクセスすることである場合、おそらくこの JSP フラグメントは JSP タグである必要があり、名前を引数としてこのタグに渡す必要があります。

于 2013-10-01T11:26:01.733 に答える
2

私の研究では (私も jstl の新人です)、リクエスト スコープは、応答ページからリクエスト ページに値を設定できます。たとえば、index.jspというページがあり 、そのアクション ページがindex_action.jspであるとします。

場合は、アクションページに値を設定します

<c:set var="nme" scope="request" value="Janaka aravinda"/>
<%  request.getRequestDispatcher("index.jsp").forward(request, response); %>

(//nme変数を作成し、その値をJanaka aravinda. として設定し、リクエスト ページのリロードに戻ります (index.jsp) )

nme これで、リクエスト値に従って index.jsp 変数を呼び出すことができますnme

<c:out value="${nme}"/>
于 2015-03-04T01:57:24.163 に答える