URL重定向出现问题。 URL应该由我的Spring-MVC控制器更改-至少我猜是这样。这个妈让我们考虑这样的控制器:
@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.RELEASE2.我已经注册了org.springframework.web.servlet.view.UrlBasedViewResolver实例。
现在的问题:为什么URL不变?
提前感谢
但肯定不是。但是然后调用showLoginResultView方法
这意味着它确实进行了重定向,并且浏览器遵循了重定向,并且对原始AJAX请求的最终响应将提供给您的AJAX处理程序的成功回调。没有必要更改地址栏中的URL,因为您不是发送常规的HTTP请求,而是发送AJAX请求。
您可以使用RedirectView,它支持相对重定向(在某种程度上)