我使用Spring Boot。我创建了这两个方法:
if (j != i) {
#pragma omp atomic
outVec[j] += MAT->val[ckey] * inVec[i];
}
当我尝试登录Web应用程序时,我得到:
java.lang.IllegalStateException:映射的不明确的处理程序方法 HTTP路径“http://localhost:8080/rest/user/bsmith”:{public com.zenar.dto.UserAppDto com.zenar.controller.UserController.getNameByUsername(java.lang.String中), public com.zenar.dto.UserAppDto com.zenar.controller.UserController.getNameByUserId(java.lang.Long中)}
似乎,它无法对数据类型做出改变。
那么需要修改URL吗?最新版本中的任何修复?
答案 0 :(得分:3)
根据Spring MVC documentation,当网址与多个模式匹配时,会使用排序来查找最具体的匹配:
URI变量和通配符数量较少的模式是 考虑更具体。例如,
/hotels/{hotel}/*
有1个URI 变量和1张外卡并且被认为更具体/hotels/{hotel}/**
作为1个URI变量和2个通配符。如果两个模式具有相同的计数,则更长的模式是 考虑更具体。例如,
/foo/bar*
更长 被认为比/foo/*
更具体。当两个模式具有相同的计数和长度时,模式具有 更少的外卡被认为更具体。例如
/hotels/{hotel}
比/hotels/*
更具体。
应用这些规则后,当Spring MVC无法确定哪一个更具体时,它将抛出该异常。解决此问题的一种方法是使其中一个更具体:
@RequestMapping(value = "/user/{userId:\\d+}", method = RequestMethod.GET)
public UserAppDto getNameByUserId(@PathVariable("userId") Long userId) {
return userService.getByUserId(userId);
}