下面是我的 Controller
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public String ABC(Registratio registration, ModelMap modelMap,
HttpServletRequest request,HttpServletResponse response){
if(somecondition=="false"){
return "notok"; // here iam returning only the string
}
else{
// here i want to redirect to another controller shown below
}
}
@RequestMapping(value="/checkPage",method = RequestMethod.GET,)
public String XYZ(ModelMap modelMap,
HttpServletRequest request,HttpServletResponse response){
return "check"; // this will return check.jsp page
}
因为 Controller ABC 是 @ResponceBody 类型,所以它总是以字符串形式返回,但我希望在其他情况下它应该被重定向到 XYZ Controller 并从中它返回一个我可以显示的 jsp 页面。 我尝试使用 return "forward:checkPage"; 也尝试使用 return "redirect:checkPage"; 但不起作用。 任何帮助。
谢谢。
最佳答案
我认为如果你想自己渲染响应或基于某种条件在一个 Controller 方法中重定向,你必须删除@ResponseBody,试试这个:
@RequestMapping(method = RequestMethod.GET)
//remove @ResponseBody
public String ABC(Registratio registration, ModelMap modelMap,
HttpServletRequest request,HttpServletResponse response){
if(somecondition=="false"){
// here i am returning only the string
// in this case, render response yourself and just return null
response.getWriter().write("notok");
return null;
}else{
// redirect
return "redirect:checkPage";
}
}
--编辑--
如果你想通过 ajax 访问 Controller ,你最好在你的请求中包含数据类型参数,以表明你只是期待一个文本响应:
$.get("/AAA-Web/abc",jQuery.param({})
,function(data){
alert(data);
}, "text");
关于java - 使用 spring mvc 3 将一个 Controller 重定向到另一个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18096053/