Spring引导映射
在下面的代码中,有两个用Spring引导映射,spring,spring-boot,spring-mvc,Spring,Spring Boot,Spring Mvc,在下面的代码中,有两个用@GetMapping注释的方法,一个需要空路径,另一个需要路径变量 @Controller @RequestMapping("/") public class BasicController { @GetMapping() public String get(Model model) { // doing something } @GetMapping("/{variable}") public S
@GetMapping
注释的方法,一个需要空路径,另一个需要路径变量
@Controller
@RequestMapping("/")
public class BasicController {
@GetMapping()
public String get(Model model) {
// doing something
}
@GetMapping("/{variable}")
public String getWithPathVar(@PathVariable("variable") String variable, Model model) {
// doing something different
}
}
问题:当应用程序运行时,我点击“www.myurl.com/”时,即使没有路径参数,它也会输入这两种方法。如何修复此问题?如果是,则听起来像是一个bug或过滤器的一些错误配置。我无法在Spring上重现这种行为
5.2.7
。下面是一个例子,解释了引擎盖下弹簧的工作原理
如果无法升级Spring版本,则只能使用单个端点作为解决方案
@GetMapping("/{variable}")
public String getWithPathVar(@PathVariable("variable") String variable, Model model) {
// doing something different
if(variable != null) {
// fulfill the normal workflow
} else {
// call ex get() workflow
}
}
您是否尝试过从控制器中删除@RequestMapping(“/”),然后将@GetMapping(“/”)放在第一个get方法上,将@GetMapping(“/{variable}”)放在第二个getWithPathVar()方法上?我尝试了很多不同的组合,但显然不是这个:)这个组合很有帮助。谢谢我使用的是SpringV5.2.8,默认配置为:(注释@InflosiveSilence添加的帮助…正如我前面提到的,我无法复制它,即使是对于
5.2.8
。顺便问一下,这两种方法会得到什么回报?再次重要的一点是:在这个ca中,您使用@Controller
和端点而不使用@restebody
,而不是@RestController
。)因此,Spring应将返回值解释为视图名称