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);
}