「Interceptorでアクションクラスを知るには」の版間の差分
提供: tknotebook
(ページの作成:「Category:コンピュータCategory:JavaCategory:Struts2 メインページ>コンピュータの部屋#Java>Struts2 Tips インターセ...」) |
(相違点なし)
|
2017年1月15日 (日) 17:53時点における版
メインページ>コンピュータの部屋#Java>Struts2 Tips
インターセプターで処理を書く際、インターセプターで処理後、どのアクションクラスでアクションを処理するか
知る必要がある場合があります。
例えば未ログインの場合、アクションを実行せず強制的にログイン画面へ飛ばすインターセプターを書く場合、 ログイン画面のログインアクションでは、ログイン画面へ飛ばすのは無意味でログインアクション処理を行うべきです。 その処理をコードにするとこんな具合になります。
@Override public String intercept(ActionInvocation invocation) throws Exception { Map<String, Object> session = invocation.getInvocationContext().getSession(); String loggedUser = (String) session.get("loggedUser");
if (loggedUser == null) { // 未ログインの場合 if (invocation.getAction().getClass().equals(Login.class)) { // ログイン画面のアクションなら次のインターセプター(アクション)へ return invocation.invoke(); } else { // ログイン画面のアクションでなければ、アクションはスキップしてログイン画面へ return "login"; } return "login"; } else { // ログイン中ならアクションを呼び出す。 return invocation.invoke(); } }