我有这个表格:
<form action="/my-path" method="post">
<div class="form-group">
<label for="domain">Domain</label>
<input class="form-control" id="domain" type="text" value="" name="domain">
<label for="color">Color</label>
<input class="form-control" id="color" type="text" value="" name="color">
</div>
<button class="btn btn-primary" type="submit">Filter</button>
</form>
我要在Spring MVC中处理的:
@PostMapping(
path = ["/my-path"],
produces = [MediaType.TEXT_HTML_VALUE])
public ResponseEntity<String> doSomething(ModelMap map) {
// ...
}
但是我无法正常工作,即使我在表单中填写数据并提交,也看不到POST
的数据。
我尝试将值绑定到我自己的dto:
@PostMapping(
path = ["/my-path"],
produces = [MediaType.TEXT_HTML_VALUE])
public ResponseEntity<String> doSomething(@RequestBody MyDto dto) {
// ...
}
,但是在这种情况下,由于不支持该方法(URL编码形式),我得到了一个例外。我在这里不知所措,我尝试了10种不同的方法来从请求中获取表单数据,但这种方法不起作用,我要么获得异常,要么一无所获。
如何使这个非常基本的用例与Spring Boot一起使用?
答案 0 :(得分:0)
如果要获取映射中的所有请求参数,可以向函数中添加@RequestParam
映射参数,如下所示:
@PostMapping(
path = ["/my-path"],
produces = [MediaType.TEXT_HTML_VALUE])
public ResponseEntity<String> doSomething(@RequestParam Map allRequestParams) {
// ...
}
如果要使每个表单组件具有不同的变量,则可以使用如下所示的内容:
@PostMapping(
path = ["/my-path"],
produces = [MediaType.TEXT_HTML_VALUE])
public ResponseEntity<String> doSomething(String domain, String color) {
// ...
}
Spring会自动将表单输入绑定到与输入名称和参数名称匹配的id属性。