Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SpringMVC3将一个控制器重定向到另一个控制器_Java_Spring Mvc - Fatal编程技术网

Java 使用SpringMVC3将一个控制器重定向到另一个控制器

Java 使用SpringMVC3将一个控制器重定向到另一个控制器,java,spring-mvc,Java,Spring Mvc,下面是我的控制器 @RequestMapping(method = RequestMethod.GET) @ResponseBody public String ABC(Registratio registration, ModelMap modelMap, HttpServletRequest request,HttpServletResponse response){ if(somecondition=="false"){ retur

下面是我的控制器

  @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类型,它将始终作为字符串返回,但我希望在else contion中,它应该重定向到XYZ控制器,并从中返回一个jsp页面,我可以显示该页面。 我尝试使用return“forward:checkPage”同时返回“重定向:检查页面” 但是不起作用。 任何帮助


谢谢。

指向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
   }
使用


我认为您必须删除@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"); 

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

请尝试此选项以获得您的答案,它将肯定是ya@Mohsin Shaikh,但ABC控制器没有重定向到XYZ控制器。。如果是,那么只有我可以检查。但是当它转到if条件“response.getWriter().write(“notok”);”时,这是为了什么?“response.getWriter().write(“notok”);”意味着自己呈现响应,这与method上的@ResponseBody具有相同的效果,但我从jquery调用$.get(“/AAA Web/abc”,jquery.param({}),function(data){alert(data);});但在ABC控制器的数据响应中,当它进入if条件时,它会向我显示“[object XMLDocument]”。。建议的其余部分工作正常。如果somecondition==“false”尝试调用data.toString(),则回调函数中的data参数将获得值“notok”。您是否签出了此选项?它可能对您有用。
$.get("/AAA-Web/abc",jQuery.param({})
    ,function(data){ 
        alert(data); 
    }, "text"); 
return new ModelAndView("redirect:/admin/index");