Html 使用get方法将表单绑定到GetMapping控制器时出现问题

Html 使用get方法将表单绑定到GetMapping控制器时出现问题,html,spring-boot,spring-mvc,thymeleaf,Html,Spring Boot,Spring Mvc,Thymeleaf,我正在尝试在thymeleaf中使用GET方法实现htmlform,如下所示: <form action="/SearchTerminal" method="get" > <label for="code">label</label> <input type="number" id="code" name="code&qu

我正在尝试在thymeleaf中使用
GET
方法实现html
form
,如下所示:

<form action="/SearchTerminal" method="get" >
      <label for="code">label</label>
      <input type="number" id="code" name="code" class="form-control" />
      <button type="submit" class="btn btn-primary btn-block ">Search</button>
</form>
当我提交搜索按钮时,控制器警告GET/SearchTerminal没有映射,我得到了错误

由于我在
GetMapping
中提供了正确的url,并且当我按下搜索按钮时,
http://localhost:8081/SearchTerminal?code=10101010
url已生成


p、 s:我想坚持
API设计原则
,不想在我的
表单
中使用
post
方法,因为它有更多类似于
GET
的特性,并且不创建任何
资源
它不是
@PathVariable
。它将用于像这样的映射

@GetMapping(value = "/SearchTerminal/{code}")
但你的情况应该是这样的

@GetMapping(value = "/SearchTerminal?code={code}")
public String searchTerminal(@RequestParam("code") String code) {
...
   return "edit-terminal";
}
这里
code
在url中,但在
之后?
实际上是查询参数。您不需要指定此模式为URL映射。就这样吧

@GetMapping(value = "/SearchTerminal")
public String searchTerminal(@RequestParam("code") String code) {
...
   return "edit-terminal";
}

那么,是哪一个呢
/SearchTerminal?code=10101010
/terminal/SearchTerminal
?听起来像是两个不同的URL。
http://localhost:8081/SearchTerminal?code=10101010
@GetMapping(value = "/SearchTerminal")
public String searchTerminal(@RequestParam("code") String code) {
...
   return "edit-terminal";
}