「リクエストスコープ変数」は、の属性として格納される変数ですHttpServletRequest
。
request.setAttribute("foo", foo);
この属性は、ELで通常の方法で使用できます#{foo}
。それHttpServletRequest
自体の存続期間は、正確に1つのHTTP要求/応答サイクルです。HTTPリクエストに関連付けられたHTTP応答がクライアント(Webブラウザー)に完全に到着すると、HttpServletRequest
そのすべての属性を含むインスタンスはガベージされます。ちなみに、JSFリクエストスコープのマネージドBeanは、の属性としても保存されますHttpServletRequest
。
JSFは基本HTTPサーブレットAPIの「上」で実行されるため、HTTPとサーブレットAPIの動作も理解していれば、これはすべて理解しやすくなります。この答えは、いくつかの啓蒙を与えるかもしれません:サーブレットはどのように機能しますか?インスタンス化、セッション、共有変数、マルチスレッド。
その後の質問は、おそらく「これは引用された段落とどのように関連していますか?」です。さて、基本的には、のvalue
属性を省略する<f:viewParam>
と、代わりにリクエストスコープに変数として配置されることを示しています。
だから、あなたが使用する場合
<f:viewParam name="entryId" />
それ以外の
<f:viewParam name="entryId" value="#{blog.entryId}" />
その後#{entryId}
、リクエストスコープのように利用可能になります。
<p>The entry ID view parameter is: #{entryId}</p>
ただし、これはビューパラメータが通常使用される方法ではありません。#{param}
あるいは、代わりにマップを使用しただけで、全体が<f:viewParam>
不要になります。
<p>The entry ID view parameter is: #{param.entryId}</p>
参照: