7

下面是我的控制器

  @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
}

由于控制器ABC是 @ResponceBody 类型,它总是以字符串形式返回,但我希望在其他情况下它应该被重定向到XYZ控制器并从中返回一个我可以显示的jsp页面。我尝试使用return "forward:checkPage"; 返回“redirect:checkPage”; 但不起作用。任何帮助。

谢谢。

4

3 回答 3

10

如果您想自己呈现响应或根据某些条件在一个控制器方法中重定向,我认为您必须删除 @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 访问控制器,你最好在你的请求中包含 datatype 参数,以表明你只是期待一个文本响应:

$.get("/AAA-Web/abc",jQuery.param({})
    ,function(data){ 
        alert(data); 
    }, "text"); 
于 2013-08-07T06:52:56.340 回答
1
return new ModelAndView("redirect:/admin/index");

上面的代码对我有用。我正在从当前控制器重定向到 AdminController 中的索引。

于 2017-12-05T21:06:55.280 回答
-1

重定向到 XYZ 控制器并从中返回一个 jsp 页面,而不是使用以下代码 i/e

    @RequestMapping(value="/checkPage",method = RequestMethod.GET,)
    public String XYZ(ModelMap modelMap,
    HttpServletRequest request,HttpServletResponse response){
   return "check";   // this will return check.jsp page
   }

采用

  @RequestMapping(value ="/checkPage",method = RequestMethod.GET)
public ModelAndView  XYZ(HttpServletRequest req)
{

    ModelAndView m=new ModelAndView();

    m.setViewName("check");
    return m;
}
于 2013-08-07T06:35:19.390 回答