Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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
Java Spring引导不明确处理程序_Java_Spring_Spring Mvc_Spring Boot - Fatal编程技术网

Java Spring引导不明确处理程序

Java Spring引导不明确处理程序,java,spring,spring-mvc,spring-boot,Java,Spring,Spring Mvc,Spring Boot,我用弹簧靴。我用两种方法创作了这篇论文: @RequestMapping(value = "/user/{userId}", method = RequestMethod.GET) public UserAppDto getNameByUserId(@PathVariable("userId") Long userId) { return userService.getByUserId(userId); } @RequestMapping(value = "/user/{usernam

我用弹簧靴。我用两种方法创作了这篇论文:

@RequestMapping(value = "/user/{userId}", method = RequestMethod.GET)
public UserAppDto getNameByUserId(@PathVariable("userId") Long userId) {
    return userService.getByUserId(userId);
}

@RequestMapping(value = "/user/{username}", method = RequestMethod.GET)
public UserAppDto getNameByUsername(@PathVariable("username") String username) {
    return userService.getNameByUsername(username);
}
当我尝试登录web应用程序时,我得到:

java.lang.IllegalStateException:映射到的不明确处理程序方法 HTTP路径“”:{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吗?最新版本中的任何修补程序?

根据,当URL匹配多个模式时,使用排序查找最特定的匹配:

URI变量和通配符计数较低的模式是 被认为更具体。例如,
/hotels/{hotel}/*
有一个URI 变量和1通配符,被认为比
/hotels/{hotel}/**
作为1个URI变量和2个通配符

如果两个图案具有相同的计数,则较长的图案为 被认为更具体。例如,
/foo/bar*
较长且 被认为比
/foo/*
更具体

当两个图案具有相同的计数和长度时,图案 通配符越少被认为越具体。例如
/hotels/{hotel}
/hotels/*
更具体

应用这些规则后,当SpringMVC无法决定哪一个更具体时,它将抛出该异常。解决此问题的一种方法是使其中一个更具体:


对的你还有问题吗?在HTTP中只有文本。Spring进行了一些转换,但只有真正的人类才会知道
123
不是用户名(谁说有人不会创建一个将其作为用户名的用户)。通过包含一个正则表达式来限制某些内容,您可能可以让它工作,但我不指望它。这里的技巧是,您可以指定一个只匹配数字的正则表达式。
@RequestMapping(value = "/user/{userId:\\d+}", method = RequestMethod.GET)
public UserAppDto getNameByUserId(@PathVariable("userId") Long userId) {
    return userService.getByUserId(userId);
}