Java Spring MVC:控制器转发后,浏览器显示来自旧控制器的 url,而不是它转发到的控制器的 url
Java Spring MVC: After controller forwards, browser shows url from old controller, not url of controller to which it forwards
成功登录后,下面的控制器方法转发到另一个控制器以提供模型和视图。这工作正常——但浏览器的 url 在转发完成后显示“http://localhost:8080/AppName/loginSuccessForward”,即使它显示来自转发控制器的视图。
有没有办法让浏览器显示转发控制器的url?如果它按照我的意愿工作,用户将在浏览器中看到“http://localhost:8080/AppName/l/l/profile" or "http://localhost:8080/AppName/t/t/profile”,这取决于他或她是哪个 class 用户。
@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:
。
参见:
- Why do we use redirect in Spring MVC?
成功登录后,下面的控制器方法转发到另一个控制器以提供模型和视图。这工作正常——但浏览器的 url 在转发完成后显示“http://localhost:8080/AppName/loginSuccessForward”,即使它显示来自转发控制器的视图。
有没有办法让浏览器显示转发控制器的url?如果它按照我的意愿工作,用户将在浏览器中看到“http://localhost:8080/AppName/l/l/profile" or "http://localhost:8080/AppName/t/t/profile”,这取决于他或她是哪个 class 用户。
@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:
。
参见:
- Why do we use redirect in Spring MVC?