成功登录后,以下控制器方法将转发到另一个控制器以提供模型和视图。这可以正常工作-但即使浏览器显示的是转发控制器的视图,转发完成后浏览器的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/

10-12 14:16