2016-04-19 8 views
1

ログインが成功すると、以下のコントローラメソッドはモデルとビューを提供するために別のコントローラに転送します。これは罰金 - しかし、フォワードされたコントローラからのビューを表示している場合でも、ブラウザのURLは、転送が完了した後に "http://localhost:8080/AppName/loginSuccessForward"を表示します。Java Spring MVC:コントローラが転送すると、ブラウザは転送先のコントローラのURLではなく、古いコントローラからのURLを表示します。

転送されたコントローラのURLをブラウザに表示させる方法はありますか?私が望むように機能している場合、ユーザーは、ユーザーのクラスに応じて、ブラウザに「http://localhost:8080/AppName/l/l/profile」または「http://localhost:8080/AppName/t/t/profile」と表示されます。コンテキストの場合

@RequestMapping("/loginSuccessForward") 
public String loginForward(Principal principal){ 
    if (principal == null){ 
     return "/"; 
    } else { 
     if (user1Service.getUser(principal.getName()) != null){ 
      return "forward:/t/t/profile"; 
     } else if (user2Service.getUser(principal.getName()) != null){ 
      return "forward:/l/l/profile"; 
     } else { 
      return "/"; 
     } 
    }   
} 

:(一般的なJavaの問題のように思えるが)これは、Spring MVCの上に構築されています。

+2

。それはサーバー側の前進です。クライアント(Webブラウザ)はまったく関与していません。代わりに*リダイレクト*をブラウザに送り返すので、更新されたURLに新しいリクエストを送ることができます。 – Andreas

+0

@アンドレアス - 理解に感謝しています。私はそれがフォワードとリダイレクトの区別であることは知らなかった:プレフィックス。私はあなたの答えを受け入れるでしょう。 – Ovid2020

答えて

関連する問題