一、
在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
对象来处理业务逻辑。
二、
在前端通过表单提交数据时,如果你同一前端页面中有其他表单设置了阻止超链接的默认行为,导致其他功能的表单无法提交。
你可以选择通过具体的表单名字取阻止默认行为
<!-- 通过超链接控制表单的提交,将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();}}});
而不是下面这种方法
var form = document.getElementById().from[0];
三、
如果是通过在地址后面添加变量的方法获取数据
要注意在Controller类对应方法传递数据时要在形参前面加上
@PathVariable(“变量名字”)