Spring MVC:@ResponseBody中的重定向

时间:2016-04-25 12:06:15

标签: spring spring-mvc

我想在spring mvc方法中重定向到另一个.jsp。我不想使用javascripts方法,例如:window.location.replace(url)。

我的方法:

@RequestMapping(value= "loginUser", method=RequestMethod.POST)
public @ResponseBody String loginUser (@RequestParam("name") String name,   @RequestParam("password") String password){ 

   return "";
}

2 个答案:

答案 0 :(得分:3)

当您的请求需要json响应时,您无法从Spring重定向。您可以为重定向设置参数,以便在输入成功块时可以使用window.location.reload();检查要重定向的参数。例如,从类似的帖子中,检查这个答案,

Redirect on Ajax Jquery Call

  

一个想法是让浏览器知道它应该重定向   将重定向变量添加到结果对象并检查   它在JQuery中

$(document).ready(function(){ 
    jQuery.ajax({ 
        type: "GET", 
        url: "populateData.htm", 
        dataType:"json", 
        data:"userId=SampleUser", 
        success:function(response){ 
            if (response.redirect) {
                window.location.href = response.redirect;
            }
            else {
                // Process the expected results...
            }
        }, 
     error: function(xhr, textStatus, errorThrown) { 
            alert('Error!  Status = ' + xhr.status); 
         } 

    }); 
});

您也可以为重定向添加响应标头,如response.setHeader("REQUIRES_AUTH", "1")和jQuery成功,

success:function(response){ 
        if (response.getResponseHeader('REQUIRES_AUTH') === '1'){ 
            window.location.href = 'login.htm'; 
        }
        else {
            // Process the expected results...
        }
    }

参考类似的问题:Spring Controller redirect to another page

答案 1 :(得分:0)

加入HttpServletResponse参数并致电sendRedirect(String)

或者,根本不要使用@ResponseBody,并返回您要使用的模型/视图。