我想在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 "";
}
答案 0 :(得分:3)
当您的请求需要json响应时,您无法从Spring重定向。您可以为重定向设置参数,以便在输入成功块时可以使用window.location.reload();
检查要重定向的参数。例如,从类似的帖子中,检查这个答案,
一个想法是让浏览器知道它应该重定向 将重定向变量添加到结果对象并检查 它在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... } }
答案 1 :(得分:0)
加入HttpServletResponse
参数并致电sendRedirect(String)
。
或者,根本不要使用@ResponseBody
,并返回您要使用的模型/视图。