我需要从这个网址开始,http://localhost:8080/home/filter?projectId=1;fileId=1
我创建了这个控制器:
@GetMapping("/home/filter/{projectId}/{fileId}")
public String filter(@PathVariable("projectId") int projectId, @PathVariable("fileId") int fileId) {
System.out.println("Project Id " + projectId);
System.out.println("File Id " + fileId);
return "redirect:/home";
}
当我测试时:http://localhost:8080/home/filter?projectId=1;fileId=1我发现了这个错误:
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Wed Apr 04 17:24:51 EEST 2018
There was an unexpected error (type=Not Found, status=404).
/home/filter
我不知道该怎么做..
答案 0 :(得分:3)
您需要了解网址中查询参数与路径参数之间的区别。
?
之后的参数,形成为name=value
(如果参数多于1,则由&
分隔),http://localhost:8080/home/filter?projectId=1&fileId=1
。/
分隔(如果有,则在?
之前),http://localhost:8080/home/filter/1/1
。对于查询参数,您可以在控制器中使用@RequestParam
注释
示例:适用于http://localhost:8080/home/filter?projectId=1&fileId=1
等网址
您的控制器可能如下所示:
@GetMapping("/home/filter")
public String filter(@RequestParam("projectId") int projectId,
@RequestParam("fileId") int fileId) {
...
}
对于路径参数,您可以在控制器中使用@PathVariable
注释
示例:适用于http://localhost:8080/home/filter/1/1
等网址
控制器可能如下所示:
@GetMapping("/home/filter/{projectId}/{fileId}")
public String filter(@PathVariable("projectId") int projectId,
@PathVariable("fileId") int fileId) {
...
}
答案 1 :(得分:2)
TL; DR :只需拨打正确的网址:http://localhost:8080/home/filter/1/1
注意路径参数和查询参数之间的区别。
您的控制器映射使用路径参数,而您调用的URL使用查询参数