Spring MVC 3:为不存在的方法找到不明确的映射

Posted

技术标签:

【中文标题】Spring MVC 3:为不存在的方法找到不明确的映射【英文标题】:Spring MVC 3 : Ambiguous mapping found for a non existing method 【发布时间】:2014-06-21 01:23:04 【问题描述】:

我有这个映射 /lists POST 请愿的“创建”方法。我做了一个重载方法“createEmpty()”来尝试一些东西,但后来因为它抛出了一个 org.springframework.beans.factory.BeanCreationException 来进行模糊映射而被删除。

问题是我删除了上述方法后,我仍然得到异常。

@Controller
public class ListsController 

@RequestMapping(value = "/lists", method = RequestMethod.POST)
public @ResponseBody List create(@RequestBody List list) 
    return list;

信息:开发应用服务器现在正在运行 2014 年 5 月 4 日下午 4:21:34 com.google.apphosting.utils.jetty.JettyLogger 警告 警告:/:javax.servlet.UnavailableException:org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0”的bean时出错:bean初始化失败;嵌套异常是 java.lang.IllegalStateException: Ambiguous mapping found。无法映射“listsController”bean 方法 公共 tacs.tp.list_sharer.domain.List tacs.tp.list_sharer.web.ListsController.createEmpty() to [/lists],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]: 已经有 'listsController' bean 方法 公共 tacs.tp.list_sharer.domain.List tacs.tp.list_sharer.web.ListsController.create(tacs.tp.list_sharer.domain.List) 映射。 2014 年 5 月 4 日下午 4:21:34 com.google.apphosting.utils.jetty.JettyLogger 警告 警告:/:javax.servlet.UnavailableException:org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0”的bean时出错:bean初始化失败;嵌套异常是 java.lang.IllegalStateException: Ambiguous mapping found。无法映射“listsController”bean 方法 公共 tacs.tp.list_sharer.domain.List tacs.tp.list_sharer.web.ListsController.createEmpty() to [/lists],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]: 已经有 'listsController' bean 方法 public tacs.tp.list_sharer.domain.List tacs.tp.list_sharer.web.ListsController.create(tacs.tp.list_sharer.domain.List) 映射。

好像 createEmpty() 缓存在某处...

【问题讨论】:

你的ListController中有createEmpty方法吗? 当然不是。 mvn clean install 解决了这个问题。 【参考方案1】:

请尝试做: 1. 如果你使用的是 eclipse - Project -> Clean. 2. 如果您使用的是 maven,请在部署前尝试清理和/或安装项目。

我看到您正在使用 Jetty,也许这些链接将有助于解决您的问题:Cleaning up Jetty - Removing 'unnecessaries' thingsJetty runs old war altought mvn clean is run

【讨论】:

这不是答案,更像是评论。考虑提供一些真实的答案。 mvn clean 然后 mvn install 解决了这个问题。谢谢!【参考方案2】:

我在两个不同的控制器中具有相同的 @RequestMapping 值,我从其中一个控制器中删除它并开始正常工作。

【讨论】:

以上是关于Spring MVC 3:为不存在的方法找到不明确的映射的主要内容,如果未能解决你的问题,请参考以下文章

为不明确的重载函数调用创建默认值

使用 Spring MVC 在 tomcat 中的 PATCH 方法

spring mvc源码长按ctrl键为啥不跳转

为不存在的文件解析相对路径(如 realpath)的最佳方法是啥?

以下方法或属性 MVC、devexpress 之间的调用不明确

Spring-Boot MVC 模板未加载(未找到 404)