2013-10-08 17 views
5

は、私は、コードの下に使用インターセプタでHttpServletRequestを取得するには:取得HttpServletRequestのStrutsの2迎撃に

HttpServletRequest request =(HttpServletRequest) ActionContext.getContext().get(HTTP_REQUEST); 

私はインターセプタでServletRequestAwareを実装しようとしたが、それは働いていませんでした。

インターセプタにHttpServletRequestを追加するより良い方法はありますか。

+0

は、なぜあなたはインターセプタで 'HttpServletRequest'が必要なのでしょうか? –

+0

AjaxリクエストがURLで直接呼び出されることを防ぐインターセプタを開発したいと思います。 http://stackoverflow.com/questions/14621539/how-to-determine-whether-a-request-is-ajax-or-normalをご覧ください。 このインターセプタはインターセプタスタックに置かれ、これらの要求を防止します。 –

答えて

4

servletConfigインターセプタを参照できるサーブレットのもの。このインターセプタが呼び出された後、ServletActionContextからサーブレットを取得できます。

HttpServletRequest request = ServletActionContext.getRequest(); 
0

あなたはActionInvoctionを試してみますgetInvocationContext()これは "ActionContext"のインスタンスを返すでしょう.get(HTTP_REQUEST);これについては。

または

使用は

ServletActionContext.getRequest() 
4

あなたはあなたの要求を取得するためにActionInvocation#getInvocationContext()を使用する必要があります。

public String intercept(ActionInvocation invocation) throws Exception { 
    ActionContext context = invocation.getInvocationContext(); 
    HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST); 
    // ... 
} 
+1

これは、内部インターセプタを使用するための承認された回答である必要があります。 –

1

それは私のために働いた

final HttpServletRequest request = (HttpServletRequest) ActionContext.getContext() 
               .get(ServletActionContext.HTTP_REQUEST); 

+0

これはOPのコードと同じです。 –

関連する問題