0

3 番目の属性はどの値になりますか

javax.servlet.jsp.PageContext.setAttribute(String name, Object value, int scope)取っていいよ?

私が知っていることから、この属性は列挙型であり、私が知っている可能な値は PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPEPageContext.RESPONSE_SCOPEおよびPageContext.PAGE_SCOPEです。これは値の完全なセットですか?

これはどちらかというと「読み方」のQです

http://docs.oracle.com/javaee/6/api/javax/servlet/jsp/JspContext.html#setAttribute%28java.lang.String,%20java.lang.Object,%20int%29

http://docs.oracle.com/javaee/6/api/javax/servlet/jsp/PageContext.html

-- 私が何も見逃していなければ、それらはあまり具体的ではありません。

//=================================

編集:Qの拡張:

applicationすべての属性を JSP 内から一度に設定する方法はありますsessionpageContext。-- 暗黙のうちに (おそらくpageContextの) メソッドを使用するか、またはメソッドの副作用として (今回はサーブレット内からもおそらくコンテキストの) 何か他のことを行いますか?

私が知っていることから、これら 4 つのスコープ ( requestcontextsessionpageContext) のそれぞれは、まったく異なる属性セットと値を持つことができます。属性を と に渡したい場合はcontext、それぞれsessionを呼び出す必要がsetAttribute()あります。

//=====================

編集:日食エディターは特定のことを伝えています。これは初期の Q かもしれません。

4

2 に答える 2

0

このパラメーターは列挙型ではなく、プレーンintです。PageContext.APPLICATION_SCOPE などは PageContext 内の定数 (public static final int) 変数です。値の完全なセットは、次のリンクにあります。

異なるスコープで同じ値を設定する理由がわかりません。(アプリケーション全体に対して) グローバルな値が必要な場合は、アプリケーション スコープを使用しますね。異なるスコープで同じものを設定すると、セッション、リクエスト、ページなどのより制限的なスコープで同じ値を何度もリセットする必要があります。

ちなみにPageContextではありません。RESPONSE_SCOPEですが、PageContext です。REQUEST_SCOPE

于 2013-07-06T03:35:51.817 に答える
0

デビッドが上で言ったように、値にアクセスする必要がある場合は、再度リセットするのではなく、最も広い範囲に設定する必要があります — アプリケーション スコープで属性を設定した場合は、どこからでもアクセスできます & ドンリクエストで設定する必要はありません。それは冗長です。

変数が設定されているスコープがわからない場合はfindAttribute、コンテキストでメソッドを使用できます。これは、ページ スコープで開始し、属性が見つかるまでリクエスト、セッション、およびアプリケーション スコープを上に移動します。

于 2013-07-06T13:47:32.473 に答える