@PathVariable("ownerId") String theOwner
中的@PathVariable String theOwner
和Spring MVC
之间是否存在任何差异。
我已经完成了Spring @PathVariable,但我并不清楚这个概念。
我通过分析uri parameter
是否与variable name
具有相同的名称找到了一个区别,然后您可以直接将其存储在变量中。这是正确的还是您可以发布与此相关的任何其他信息。
@GetMapping("/owners/{ownerId}")
public String findOwner(@PathVariable("ownerId") String theOwner, Model model) {
// implementation omitted
}
@GetMapping("/owners/{ownerId}")
public String findOwner(@PathVariable String ownerId, Model model) {
// implementation omitted
}
答案 0 :(得分:3)
唯一的区别是第一个选项允许您更改方法中的参数名称,您可以使用theOwner
而不是ownerId
。
如果您有一个具有相同名称ownerId
答案 1 :(得分:2)
Spring MVC documentation非常明确它的工作原理:
要处理
@PathVariable
注释,Spring MVC需要按名称查找匹配的URI模板变量。您可以在注释中指定它:@GetMapping("/owners/{ownerId}") public String findOwner(@PathVariable("ownerId") String theOwner, Model model) { // implementation omitted }
或者,如果URI模板变量名称与方法参数名称匹配,则可以省略该详细信息。只要您的代码使用调试信息或Java 8上的
-parameters
编译器标志进行编译,Spring MVC就会将方法参数名称与URI模板变量名称匹配:@GetMapping("/owners/{ownerId}") public String findOwner(@PathVariable String ownerId, Model model) { // implementation omitted }
答案 2 :(得分:1)
从您提到的文档页面:
URI模板" / owners / {ownerId}"指定变量名称`ownerId。当控制器处理此请求时,ownerId的值将设置为URI的相应部分中找到的值。例如,当/ owner / fred的请求进入时,ownerId的值为fred。
因此,如果您不想指定@PathVariable的值,请使用与方法参数相同的名称并在路径模板中使用。