Spring ModelandView 重定向在 jquery ajax 调用中不起作用

spring modelandview redirect not working in jquery ajax call

本文关键字:调用 不起作用 ajax jquery ModelandView 重定向 Spring      更新时间:2023-09-26

我正在重新制作控制器下方的模型视图属性表单

@RequestMapping(value = "/signin", method = RequestMethod.POST)
    public @ResponseBody
    ModelAndView loginUser(@RequestParam(value = "userName") String userName,
            @RequestParam(value = "password") String password,
            ModelAndView model) {
     on success login
       return new ModelAndView("redirect:/another controller here");
     on failure login 
           return new ModelAndView("same page");

我有 jquery ajax 调用来调用此控制器,当成功登录时,我想让用户获取另一个页面,但我的响应来到同一页面而不是重定向到另一个页面。

需要帮助

编辑 - 我正在使用基于 URL 的视图解析器和 Apache 磁贴进行视图渲染

假设我理解您的问题,重定向将在 AJAX 调用的上下文中进行 - 因此 JQuery AJAX 代码将遵循重定向并接收它从/another controller here返回的响应。这不会触发整个页面刷新,但 JQuery AJAX 代码将提供响应以在当前页面中呈现。

要在成功登录后更改整个页面,最好不要在此屏幕上使用 AJAX。

或者,您可以返回一些指示符来告诉 JQuery 重定向。例如:

@RequestMapping(value = "/signin", method = RequestMethod.POST)
    public @ResponseBody
    ModelAndView loginUser(@RequestParam(value = "userName") String userName,
        @RequestParam(value = "password") String password,
        ModelAndView model) {
     on success login
       ModelAndView modelAndView = new ModelAndView("same page");
       modelAndView.addObject("redirectUrl", "/another controller here");
       return modelAndView;
     on failure login 
       return new ModelAndView("same page");

然后在same page中有一些Javascript,它查找redirectUrl的存在并触发整个页面重定向(如果存在)。

var redirect = '${redirectUrl}';
if (redirect) {
    window.location.replace(redirect);
}