您的位置:首页技术文章
文章详情页

原因:java.lang.IllegalStateException:找到了模糊的映射无法映射“ appController” Bean方法

【字号: 日期:2024-05-16 09:21:21浏览:79作者:猪猪
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解决原因:java.lang.IllegalStateException:找到了模糊的映射无法映射“ appController” Bean方法?

这是您收到的错误消息:

找到模糊的映射。无法将“ appController”bean方法公共java.lang.String映射为it.besmart.controller.AppController.newClient(org.springframework.ui.ModelMap)映射到{[//new],方法= [POST],params = [], headers = [],consumes = [],produces = [],custom= []}:已经有’appController’bean方法public java.lang.Stringit.besmart.controller.AppController.saveClient(it.besmart.models.Client,org.springframework.validation.BindingResult,org.springframework.ui.ModelMap)映射。

它告诉您要映射多个方法来处理POSTURL /new。如果网络浏览器POST向URL 发出请求,那么/new您应该使用哪种方法处理该请求?

这是两种令人反感的方法:

@RequestMapping(value = {'/new'}, method = RequestMethod.POST) public String newClient(ModelMap model){Client client = new Client();model.addAttribute('client', client);model.addAttribute('edit', false);return 'registration'; } @RequestMapping(value = {'/new'}, method = RequestMethod.POST) public String saveClient(@Valid Client client, BindingResult result, ModelMap model){if(result.hasErrors()){ return 'registration';}clientService.saveClient(client);model.addAttribute('success', 'Client' + client.getNomeClient() + 'registrato correttamente');return 'success'; }

我怀疑其中第一个是不正确的。您可能想要使用RequestMethod.GET代替RequestMethod.POST。

解决方法

早上好,我正在处理一个模棱两可的映射,我无法解码…我正在使用Spring mvc 4.0.6和hibernate4.3.6在tomcat中发动战争时遇到此错误:

ERROR [localhost-startStop-2]: Context initialization failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name ’requestMappingHandlerMapping’ defined in class org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping found. Cannot map ’appController’ bean method public java.lang.String it.besmart.controller.AppController.newClient(org.springframework.ui.ModelMap)to {[//new],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}: There is already ’appController’ bean methodpublic java.lang.String it.besmart.controller.AppController.saveClient(it.besmart.models.Client,org.springframework.validation.BindingResult,org.springframework.ui.ModelMap) mapped. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4727) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5167) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:945) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1768) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:744)Caused by: java.lang.IllegalStateException: Ambiguous mapping found. Cannot map ’appController’ bean method public java.lang.String it.besmart.controller.AppController.newClient(org.springframework.ui.ModelMap)to {[//new],org.springframework.ui.ModelMap) mapped. at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:192) at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.detectHandlerMethods(AbstractHandlerMethodMapping.java:164) at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:124) at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:103) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:126) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549) ... 25 more

我不明白为什么我会收到此错误。AppController很直

package it.besmart.controller;import it.besmart.models.Client;import it.besmart.service.ClientService;import java.util.List;import java.util.Locale;import javax.validation.Valid;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.MessageSource;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.validation.BindingResult;import org.springframework.validation.FieldError;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;@Controller@RequestMapping('/')public class AppController { @Autowired ClientService clientService; @Autowired MessageSource messageSource; @RequestMapping(value = { '/','/list' },method = RequestMethod.GET) public String listClients(ModelMap model){List<Client> clients = clientService.findAllClients();model.addAttribute('clients',clients);return 'allclients'; } @RequestMapping(value = {'/new'},method = RequestMethod.POST) public String newClient(ModelMap model){Client client = new Client();model.addAttribute('client',client);model.addAttribute('edit',false);return 'registration'; } @RequestMapping(value = {'/new'},method = RequestMethod.POST) public String saveClient(@Valid Client client,BindingResult result,ModelMap model){if(result.hasErrors()){ return 'registration';}clientService.saveClient(client);model.addAttribute('success','Client' + client.getNomeClient() + 'registrato correttamente');return 'success'; } @RequestMapping(value = { '/edit-{name}-client'},method = RequestMethod.POST) public String updateClient(@Valid Client client,ModelMap model,@PathVariable String name ){if(result.hasErrors()){ return 'registration';}if(!clientService.isClientNameUnique(client.getIdClient(),client.getNomeClient())){ FieldError idErr = new FieldError('client','name',messageSource.getMessage('non.unique.nome_client',new String[]{client.getNomeClient()},Locale.getDefault())); result.addError(idErr); return 'registration';}clientService.saveClient(client);model.addAttribute('success','Client' + client.getNomeClient() + 'aggiornato correttamente');return 'success'; } @RequestMapping(value = { '/delete-{id}-client' },method = RequestMethod.GET)public String deleteClient(@PathVariable int id){clientService.deleteClientById(id);return 'redirect:/list'; } }

ClientService.java

package it.besmart.service;import it.besmart.models.Client;import java.util.List;public interface ClientService { Client findById(int id); void saveClient(Client client); void updateClient(Client client); void deleteClientById(int id); List <Client> findAllClients(); Client findClientByName(String name); boolean isClientNameUnique(Integer id,String name);}

在我看来,这一切都是很直接的……对于这种应用程序,我还是一个新手。

标签: java
相关文章: