Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
Spring 多个控制器的单个@RequestMapping_Spring_Spring Mvc_Request Mapping - Fatal编程技术网

Spring 多个控制器的单个@RequestMapping

Spring 多个控制器的单个@RequestMapping,spring,spring-mvc,request-mapping,Spring,Spring Mvc,Request Mapping,我正在尝试为2或3个控制器创建一个@RequestMapping值,不幸的是,我遇到了错误 例如: 在上面的例子中,我在2个控制器中使用了Save,所以如果我使用单控制器,它就会出现错误,正如我预期的那样工作 错误是: SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.

我正在尝试为2或3个控制器创建一个
@RequestMapping
值,不幸的是,我遇到了错误

例如:

在上面的例子中,我在2个控制器中使用了
Save
,所以如果我使用单控制器,它就会出现错误,正如我预期的那样工作

错误是:

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping#0': Initialization of bean failed; nested exception is java.lang.IllegalStateException: Cannot map handler [clients] to URL path [//save]: There is already handler [crm.venkat.controller.Clients@7e47dc12] mapped.
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:272)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:196)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: Cannot map handler [clientCompaniesController] to URL path [//Search]: There is already handler [crm.venkat.controller.ClientCompaniesController@7e47dc12] mapped.
    at org.springframework.web.servlet.handler.AbstractUrlHandlerMapping.registerHandler(AbstractUrlHandlerMapping.java:376)
    at org.springframework.web.servlet.handler.AbstractUrlHandlerMapping.registerHandler(AbstractUrlHandlerMapping.java:348)
    at org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping.detectHandlers(AbstractDetectingUrlHandlerMapping.java:82)
    at org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping.initApplicationContext(AbstractDetectingUrlHandlerMapping.java:58)
    at org.springframework.context.support.ApplicationObjectSupport.initApplicationContext(ApplicationObjectSupport.java:119)
    at org.springframework.web.context.support.WebApplicationObjectSupport.initApplicationContext(WebApplicationObjectSupport.java:71)
    at org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:73)
    at org.springframework.context.support.ApplicationContextAwareProcessor.invokeAwareInterfaces(ApplicationContextAwareProcessor.java:99)
    at org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:82)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1396)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
    ... 20 more

对于不同的控制器,您不能有相同的
url映射
,但是您可以做的是:

@Controller
@RequestMapping("/contacts") //line added here
public class contatcs {

  @RequestMapping(value="/Save", params="m=contacts")
  public ModelAndView SaveContacts(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/savecontacts");
  }

  @RequestMapping(value="/update", params="m=contacts") 
  public ModelAndView UpdateContacts(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/updatecontacts");
  }
}



@Controller
@RequestMapping("/clients") //line added here
public class clients {

  @RequestMapping(value="/Save", params="m=clients")
  public ModelAndView SaveClients(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/saveclients");
  }

  @RequestMapping(value="/update", params="m=clients")
  public ModelAndView updateClients(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/updateclients");
  }
}

现在,您可以启动一个url
/contacts/Save
,该url将在
contacts
class'
SaveContacts
方法中获得控制权,
/clients/Save
将转到
client
class'
SaveClients
方法。同样,对于更新。

对于不同的控制器,您不能有相同的
url映射
,但是您可以做的是:

@Controller
@RequestMapping("/contacts") //line added here
public class contatcs {

  @RequestMapping(value="/Save", params="m=contacts")
  public ModelAndView SaveContacts(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/savecontacts");
  }

  @RequestMapping(value="/update", params="m=contacts") 
  public ModelAndView UpdateContacts(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/updatecontacts");
  }
}



@Controller
@RequestMapping("/clients") //line added here
public class clients {

  @RequestMapping(value="/Save", params="m=clients")
  public ModelAndView SaveClients(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/saveclients");
  }

  @RequestMapping(value="/update", params="m=clients")
  public ModelAndView updateClients(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/updateclients");
  }
}

现在,您可以启动一个url
/contacts/Save
,该url将在
contacts
class'
SaveContacts
方法中获得控制权,
/clients/Save
将转到
client
class'
SaveClients
方法。同样,对于更新。

对于不同的控制器,您不能有相同的
url映射
,但是您可以做的是:

@Controller
@RequestMapping("/contacts") //line added here
public class contatcs {

  @RequestMapping(value="/Save", params="m=contacts")
  public ModelAndView SaveContacts(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/savecontacts");
  }

  @RequestMapping(value="/update", params="m=contacts") 
  public ModelAndView UpdateContacts(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/updatecontacts");
  }
}



@Controller
@RequestMapping("/clients") //line added here
public class clients {

  @RequestMapping(value="/Save", params="m=clients")
  public ModelAndView SaveClients(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/saveclients");
  }

  @RequestMapping(value="/update", params="m=clients")
  public ModelAndView updateClients(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/updateclients");
  }
}

现在,您可以启动一个url
/contacts/Save
,该url将在
contacts
class'
SaveContacts
方法中获得控制权,
/clients/Save
将转到
client
class'
SaveClients
方法。同样,对于更新。

对于不同的控制器,您不能有相同的
url映射
,但是您可以做的是:

@Controller
@RequestMapping("/contacts") //line added here
public class contatcs {

  @RequestMapping(value="/Save", params="m=contacts")
  public ModelAndView SaveContacts(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/savecontacts");
  }

  @RequestMapping(value="/update", params="m=contacts") 
  public ModelAndView UpdateContacts(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/updatecontacts");
  }
}



@Controller
@RequestMapping("/clients") //line added here
public class clients {

  @RequestMapping(value="/Save", params="m=clients")
  public ModelAndView SaveClients(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/saveclients");
  }

  @RequestMapping(value="/update", params="m=clients")
  public ModelAndView updateClients(@ModelAttribute("command") ContactsBean contactsBean,
        BindingResult result)
    //some stuff
    return new ModelAndView("/updateclients");
  }
}

现在,您可以启动一个url
/contacts/Save
,该url将在
contacts
class'
SaveContacts
方法中获得控制权,
/clients/Save
将转到
client
class'
SaveClients
方法。同样,对于更新。

它说在这里»无法将处理程序[ClientCompanyController]映射到URL路径[//搜索]:原因所在的位置已经有处理程序«了。它说在这里»无法将处理程序[ClientCompanyController]映射到URL路径[//搜索]:原因所在的位置已经有处理程序«了。它说在这里»无法映射处理程序[ClientCompanyController]到URL路径[//搜索]:原因所在的位置已经有处理程序«了。它说就在这里»无法将处理程序[ClientCompanyController]映射到URL路径[//搜索]:原因所在的位置已经有处理程序«。