1

私は次のようなクラスを持っています:

@Controller(value = "services")
@RequestMapping("/")
@SessionAttributes({"SESSIONID"})
public class Services {

   @RequestMapping("/user/loginStatic")
   @ModelAttribute("SESSIONID")
   public LoginResponseBean loginStatic(String username){
       LoginResponseBean result = otherClass.login(username);
       retrun result;
   }
}

私の問題:このコードは「結果」オブジェクトをセッションに保存する原因ですが、「result.getSessionId()」をセッションに保存したいです。

「モデルモデル」を「loginStatic」メソッドの入力引数に追加することはできません。これは、メソッドの署名を変更する必要があり、今はできないためです。また、httpセッションを明示的に取得して属性を設定することもできません(他の副作用のため)。どうすればそれができますか?ありがとう..

4

2 に答える 2

1

1 つ、複数、またはすべてのコントローラーに適用さ<mvc:interceptors/>れるカスタムを登録するために使用できます。HandlerInterceptorたとえば、すべてのコントローラーのインターセプターを登録する方法は次のとおりです。

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="a.b.c.MyHandlerInterceptorAdapter"/>
    </mvc:interceptor>
</mvc:interceptors>

mvc-config-interceptors詳細については、mvc-handlermapping-interceptorドキュメントも参照してください。

注: Spring 3.2 のドキュメントはリンクされているため、使用している Spring のバージョンに合わせて URL のリリース番号を変更することをお勧めします。

于 2013-01-09T08:54:03.223 に答える
0

ここで受け入れられた回答を見てください: How do I get the session object in spring

そこで説明されているようにセッションオブジェクトを取得し、属性を追加できます。

于 2013-01-09T07:39:54.533 に答える