Spring MVC url重定向

时间:2014-05-03 17:00:45

标签: spring url spring-mvc redirect url-redirection

我遇到了网址重定向问题。我的Spring-MVC控制器应该更改URL - 至少我猜是这样。这个马 让我们考虑一下这样的控制器:

@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping(value="/showLoginForm", method = RequestMethod.GET)
    public String printWelcome(ModelMap model) {
        return "loginView";
    }

    @RequestMapping(value="/verifyLogin", method = RequestMethod.POST)
    public String verifyLogin(@RequestParam String login, @RequestParam String password, ModelMap model) {
        //some stuff here
        return "redirect:/user/showLoginResult";
    }

    @RequestMapping(value="/showLoginResult", method = RequestMethod.GET)
    public String showLoginResultView(){
        return "loginResult";
    }
}

最初用户输入URL:../ user / showLoginForm并填写表单,点击提交按钮请求,数据由ajax发送:

$.ajax({
    url: './verifyLogin',
    method: 'POST',
    data:{
          "login": login,
          "password": password
    },

    error: function(){
        //some stuff to do
    },
    success: function(data){
        //some stuff to do
        $("body").html( data ) //fetching data from request to browser, is this correct?
    }
});

已发送请求会触发要调用的verifyLogin方法,该方法应将URL重定向到:user / showLoginResult,但肯定不会。但是然后调用showLoginResultView方法并将loginResult视图返回给ajax回调。

要明确:
1.我使用的是Spring 4.0.4.RELEASE
2.我已经注册了org.springframework.web.servlet.view.UrlBasedViewResolver实例。

现在的问题是:为什么网址不会改变?

提前致谢

2 个答案:

答案 0 :(得分:2)

  

但肯定不是。但是然后调用了showLoginResultView方法

这意味着它确实进行了重定向,并且浏览器遵循重定向,并且对原始AJAX请求的最终响应将提供给AJAX处理程序的成功回调。没有理由更改地址栏中的URL,因为您不是发送常规HTTP请求,而是发送AJAX请求。

另请参阅:Returning redirect as response to XHR request

答案 1 :(得分:0)