我遇到了网址重定向问题。我的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实例。
现在的问题是:为什么网址不会改变?
提前致谢
答案 0 :(得分:2)
但肯定不是。但是然后调用了showLoginResultView方法
这意味着它确实进行了重定向,并且浏览器遵循重定向,并且对原始AJAX请求的最终响应将提供给AJAX处理程序的成功回调。没有理由更改地址栏中的URL,因为您不是发送常规HTTP请求,而是发送AJAX请求。
答案 1 :(得分:0)
您可以使用RedirectView,它在一定程度上支持相对重定向