成功登录后,以下控制器方法将转发到另一个控制器以提供模型和视图。这可以正常工作-但即使浏览器显示的是转发控制器的视图,转发完成后浏览器的URL也会显示“ http://localhost:8080/AppName/loginSuccessForward”。
有没有办法让浏览器显示转发的控制器的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 "/";
}
}
}
对于上下文:这是基于Spring MVC构建的(尽管这似乎是一个常见的Java问题)。
最佳答案
将forward:
更改为redirect:
。
看到:
Spring MVC Controller: what is the difference between “return forward”, “return redirect” and “return jsp file”
Why do we use redirect in Spring MVC?
关于java - Java Spring MVC: Controller 转发后,浏览器显示旧 Controller 的URL,而不是它转发到的 Controller 的URL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36730128/