2017-07-14 10 views
0

コントローラに到達する前にすべてのリクエストに属性を追加したいとします。コントローラにHttpServletRequest属性(インターセプタで設定)を挿入するにはどうすればよいですか?

私は何を使用しています:

public ResponseEntity<?> someMethod(HttpServletRequest request){ 
    request.getAttribute("validSession"); 
    ... 

私の質問は、私が「@RequestParam(のような、よりエレガントにこれを行うことができます:

@Component 
public class SessionValidatorInterceptor implements HandlerInterceptor { 

@Override 
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 
     throws Exception { 
    .... some code .... 
    request.setAttribute("validRequest","true"); 
    .... more code ... 
    return true; 
} 

は私がやっている私の残りのコントローラでこの属性を取得しますvalidSession ")または@PathVariableか他の何か? Springでこれを行うことはできますか?

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

+3

'@ RequestAttribute'(Spring 4.3から利用可能です)はどうですか? –

+0

うわー。私はどのように愚かですか?感謝@M.Deinum。 私は受け入れることができるように答えとして投稿してください。 :) –

答えて

3

Spring 4.3では、@RequestAttributeアノテーションが追加されました。

public void yourMethod(@RequestAttribute("validRequest") boolean valid) 

トリックを行う必要があります。

あなたが以前のバージョンのSpringであれば、それを実装するために独自のHandlerMethodArgumentResolverを実装することができます。

+0

ありがとう。私は現在の春のバージョンを使用しているので、魅力的に機能しました! :) –

1

は単に氏デニムは答えを投稿していない、ので、この

public ResponseEntity<?> someMethod(HttpServletRequest request, 
@RequestAttribute("validSession") String xyz){ 
} 

同様@RequestAttribute を使用し、私はなぜ私を思いました。^_^

+1

あまりにも早くない。あなたはupvoteを得る:p –

関連する問題