【问题标题】:Ambiguous handler methods mapped for HTTP path 'http://localhost:8080/error' for POST为 POST 的 HTTP 路径“http://localhost:8080/error”映射的模糊处理程序方法
【发布时间】:2019-04-14 19:04:11
【问题描述】:

我的数据已成功插入数据库,但我仍然不断收到此错误。它运行良好,但我很恼火,因为我不断收到此错误。
这是我的代码:

$.ajax
({
type: 'post',
url: '/SendMessage',
data: 
{
    message_id: 0,
    message_sender: user_id,
    message_to: item,
    message_info: message,
    message_time: dateFormat,
    message_seen: "NO"

},
success: function (response) 
{
    alert("success");
},
});

这是我的控制器: 私有静态最终字符串 PATH = "/error";

@RequestMapping(value="/SendMessage" , method=RequestMethod.POST)
public void sendMessage(Message message) {
    messageService.saveOrUpdate(message);
}

@RequestMapping(value= PATH) 
public ModelAndView error404() {
    ModelAndView model = new ModelAndView("error/error404");
    return model;
}

@Override
public String getErrorPath() {
    return PATH;
}

application.properties

spring.mvc.view.prefix= /WEB-INF/jsp/
spring.mvc.view.suffix= .jsp

server.error.whitelabel.enabled= false 
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration

错误:

为 HTTP 路径“http://localhost:8080/error”映射的模糊处理程序方法:{public org.springframework.web.servlet.ModelAndView com.rtc_insurance.controller.SubmitController.error404(), public org.springframework.web.servlet.ModelAndView com .rtc_insurance.controller.WebsiteController.error404()} 在 org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:371) ~[spring-webmvc-5.0.9.RELEASE.jar:5.0.9.RELEASE]

希望你能帮助我。非常感谢!!!

【问题讨论】:

  • 错误是什么?
  • 已经添加了:)
  • 你能更新这个类代码com.rtc_insurance.controller.WebsiteController吗?
  • 我该怎么办?
  • 能否分享一下WebsiteController上的代码?

标签: spring-boot


【解决方案1】:

假设问题实际上是关于问题的标题(为 HTTP 路径“http://localhost:8080/error”映射为 POST 的模糊处理程序方法)

我可以这么说:

  • 您的控制器和 Ajax 请求正常,在这里真的无关紧要
  • /error 上有一个映射出现在您的一个控制器中

Spring 有自己的错误处理(可以被覆盖,但可能不像您尝试过的那样),它还映射到 /error,因此这里存在映射冲突。

你可以阅读更多关于 spring boot 错误处理here(尤其是this part 可能是相关的)

更新: 更新问题后,请查看com.rtc_insurance.controller.WebsiteController.error404 一定是您的控制器不符合我的回答中上述链接中提到的 Spring Boot 错误处理机制

【讨论】:

  • 它出现在我提交的每个 ajax post/get 上。 :(
  • 检查com.rtc_insurance.controller.WebsiteController.error404 的映射并阅读我发送的文档:) 你会看到原因
  • 嘿,我已阅读文档并尝试更新我的代码。现在我得到了一个不同的错误。我已经更新了上面的代码
  • 所以尝试从问题中添加的控制器中删除 error404() 方法......错误应该消失。由于您阅读了文档,因此您现在知道如何正确映射它......
【解决方案2】:

从错误看来,您声明了多个具有相同 url 'error' 或相同方法签名的方法。

所以 spring 无法决定映射哪个 url,因为它在同一个 url 上获取多个方法。

【讨论】:

  • 我不知道它为什么会重定向到 /error 页面。你能帮帮我吗?
  • 添加 com.rtc_insurance.controller.WebsiteController.error404() 代码一次。
  • 我收到 org.springframework.beans.factory.BeanCreationException:在创建类路径资源 [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$ 中定义的名称为“requestMappingHandlerMapping”的 bean 时出错EnableWebMvcConfiguration.class]:调用init方法失败;嵌套异常是 java.lang.IllegalStateException: Ambiguous mapping。无法映射“basicErrorController”方法
  • 我已经尝试按照您提供的链接进行操作。我已经更新了上面的代码。它仍然给我一个错误
猜你喜欢
  • 2015-12-26
  • 2014-07-30
  • 1970-01-01
  • 2018-07-31
  • 2017-09-28
  • 2013-05-01
  • 2011-03-17
  • 2016-05-11
  • 2018-01-27
相关资源
最近更新 更多