一、
在Spring MVC和Spring Boot中,如果你的控制器方法参数被标注为一个Java对象,并且该对象的字段与表单输入字段的名称匹配,Spring会自动将表单数据绑定到该对象上。这种机制称为数据绑定(Data Binding)。
假设你有一个表单如下:
<form id="searchForm" th:action="@{/search}" method="get">
<input id="nameInput" type="text" name="name" placeholder="Name" required>
<input id="idInput" type="text" name="id" placeholder="ID" required>
<button type="submit">Search</button>
</form>
你的控制器方法可以定义为:
@Controller
public class SearchController {
@GetMapping("/search")
public String search(User user, Model model) {
// user 对象会自动填充表单提交的数据
// 你的处理逻辑
model.addAttribute("result", searchService.search(user));
return "searchResults";
}
}
假设你有一个 User
类:
public class User {
private String name;
private String id;
// getters and setters
}
在这种情况下,当表单提交时,Spring会自动将表单数据绑定到 User
对象上。这是因为表单中的 name
属性与 User
类中的字段名称匹配。
数据绑定示例
-
实体类:
public class User { private String name; private String id; // getters and setters }
-
控制器:
@Controller public class SearchController { @GetMapping("/search") public String search(User user, Model model) { // 表单数据已经被绑定到 user 对象 // 处理逻辑 model.addAttribute("result", searchService.search(user)); return "searchResults"; } }
-
表单:
<form id="searchForm" th:action="@{/search}" method="get"> <input id="nameInput" type="text" name="name" placeholder="Name" required> <input id="idInput" type="text" name="id" placeholder="ID" required> <button type="submit">Search</button> </form>
这样,当你提交表单时,Spring会自动将 name
和 id
字段的值填充到 User
对象的对应字段中。你可以在控制器方法中直接使用这个 User
对象来处理业务逻辑。
二、
在前端通过表单提交数据时,如果你同一前端页面中有其他表单设置了阻止超链接的默认行为,导致其他功能的表单无法提交。
你可以选择通过具体的表单名字取阻止默认行为
html
<!-- 通过超链接控制表单的提交,将post请求转换成delete请求-->
<form id="deleteFrom" method="post">
<!-- JiddenHtppMethodFilter要求,必须传输_method请求参数,并且值为最终的请求方式-->
<input type="hidden" name="_method" value="delete">
</form>
============================================
var vue = new Vue({
el:"#app",
methods:{
deleteUser(event){
//获取form 表单
var form = document.getElementById("deleteFrom");//通过具体的id
//将超链接的href属性赋值给form表单的action属性
//event.target表示当前触发事件的标签
form.action = event.target.href;
//表单提交
form.submit();
//阻止超链接的默认行为
event.preventDefault();
}
}
});
而不是下面这种方法
html
var form = document.getElementById().from[0];
三、
如果是通过在地址后面添加变量的方法获取数据
要注意在Controller类对应方法传递数据时要在形参前面加上
@PathVariable(“变量名字”)