【发布时间】:2021-10-30 21:47:23
【问题描述】:
我的设置如下:
我在同一页面上有一个表格和一个表格:localhost:8080/persons?firstname=frank
这会相应地显示所有有名字的人。 在同一页面上,可以提交创建新人员的表单:
<form action="/persons" method="POST">
<input type="hidden" name="_method" value="POST"/>
<input type="text" name="firstname"/>
<input type="text" name="lastname"/>
<input type="submit" value="Create"/>
</form>
问题:当我实际上将POST表单内容发送到Spring@Controller时,会发送以下内容:
网址:/persons?firstname=frank
请求正文:_method=post&firstname=&lastname=doe
Spring 然后神奇地将 GET 查询参数和 POST 表单参数合并到一个 DTO 中,并生成一个同时设置了名字 + 姓氏的 PersonDto
@PostMapping("/persons")
public void addPerson(PersonDto p) {
//p.firstname => Frank, p.lastname = Doe
}
PersonDto {
public String firstname, lastname, age;
}
Spring 不知何故从 get-query url 参数中导出请求正文值也。为什么??
【问题讨论】:
标签: java html spring spring-mvc