2012-04-23 120 views
0

我必须在第一个控制器的基础上调用一个控制器,我必须调用另一个控制器...... 但这不是在春季3 mvc工作........春季控制器3

@Controller 
public class ajaxContoller { 
     @RequestMapping(value="/mmiFacade",method=RequestMethod.POST) 
    public @ResponseBody String mmiFacade(@RequestParam String sType){ 
         String forwardName = "";   
     if (sType.equalsIgnoreCase("Pincode")) { 

      forwardName = "forward:/pincodeAction"; 
     } else if (sType.equalsIgnoreCase("Locality")) { 

      forwardName = "forward:/localityAction"; 
     } else if (sType.equalsIgnoreCase("Patient")) { 

      forwardName = "forward:/patientAction"; 
     } else if (sType.equalsIgnoreCase("Dlhdata")) { 

      forwardName = "forward:/Dlhdata"; 
     } 
      return forward; 

    } 



    @RequestMapping(value="/pincodeAction",method=RequestMethod.POST) 
    public @ResponseBody String ajax(){ 
      return "hiii"; 

    } 
@RequestMapping(value="/localityAction",method=RequestMethod.POST) 
    public @ResponseBody String ajax1(){ 
      return "hiii1"; 

    } 


} 

回答

0

您应该返回modelandview对象。以“forward:/”开头的视图名称将完成这项工作,否则Spring甚至不会尝试解释响应。 实现一个开关并调用其他映射作为简单调用另一个java函数的另一个选项。

+0

现在的问题是,我得到了一个错误..... org.springframework.beans.factory.BeanCreationException:创建名为'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping# 0':bean初始化失败;嵌套异常是java.lang.IllegalStateException:找到模糊映射。无法映射'mmiController'bean方法 – 2012-04-23 08:13:32

+0

我得到一个错误java.lang.IllegalStateException:找到了不明确的映射。无法映射'mmiController'bean方法 – 2012-04-23 08:17:48

+0

'找到不明确的映射'意味着您至少将2个方法映射到相同的路径。检查您的@RequestMapping定义 – Dima 2012-04-23 08:19:58

0

返回包含视图名称的字符串与返回ModelAndView对象的视图名称设置为String完全相同。如果你只是返回一个String,Spring会在内部创建一个ModelAndView并将视图名称设置为String的值。

在您的示例中,您不应使用@ResponseBody注释mmiFacade方法。使用@ResponseBody绕过视图解析过程,视图解析过程将检测并处理视图名称中的“forward:”和“redirect:”前缀。