2011-09-13 8 views
0

を必要とするすべてのシナリオでは、私は、ウェブサイトからパラの下に、これを読んだことがあります:Struts2の:ActionクラスはHttpServletRequestオブジェクト

When a Action class requires objects such as the HttpServletRequest ,that can be obtained by asking the ActionContext or implementing ServletRequestAware. 

は、誰が私にActionクラスは、HttpServletRequestオブジェクトを必要とするシナリオを教えてもらえます?

ありがとうございました。

答えて

0

私自身は非常に少ないか、HttpServletRequestをobject.Iであなたの行動を結合の不使用を参照してくださいは、アイデアは(私自身がこれまでに見たことがない)いくつかの特定のユースケースでは、これらのオブジェクト

にアクセスする方法を提供することであると考えています

HttpServletRequestにランタイム依存関係を持つアクションをテストすることは難しくなります。そのような参照を使用するようにアクションクラスでHTTPオブジェクトの参照を取得する必要があるようなケースPOJOアクションクラスのStruts2哲学に対する

+0

HttpServletRequestを使用するのがまれである場合、HttpSessionへのアクセスはどのようにすることができますか(HttpServletRequestによる方法ではありません) – Kiran

+0

他の方法でセッションにアクセスすることはできますが、 SessionAwareを実装すると、struts2にセッション属性(マップ)をアクションに注入する機会が与えられます。これにより、コードを基になるサーブレットコンテキストに結合することがなくなり、必要な属性を持つアクションにマップオブジェクトを渡すことができるため、テストが容易になります。また、このセッションマップに加えられた変更は、実セッションオブジェクトに反映されます。マップattibutes = ActionContext.getContext()。getSession();これはセッションにアクセスする他の方法です –

0

パラメータまたは属性以外の要求にアクセスする必要があるときはいつでも。たとえば、メソッド、リモートユーザ、その他のものが必要な場合があります。

Umeshが言っているように、これらはエッジケースです。より多くの種類の情報はインターセプタでのみ必要とされます。インターセプタは、依存性の低い方法でアクションに設定できます。

関連する問題