ssm日常项目中问题集合

一、

在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 类中的字段名称匹配。

数据绑定示例

  1. 实体类

    复制代码
    public class User {
        private String name;
        private String id;
    
        // getters and setters
    }
  2. 控制器

    复制代码
    @Controller
    public class SearchController {
    
        @GetMapping("/search")
        public String search(User user, Model model) {
            // 表单数据已经被绑定到 user 对象
            // 处理逻辑
            model.addAttribute("result", searchService.search(user));
            return "searchResults";
        }
    }
  3. 表单

    复制代码
    <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会自动将 nameid 字段的值填充到 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(“变量名字”)
相关推荐
javadaydayup2 小时前
别再逐个注入了!@Autowired 批量获取接口实现类的核心逻辑拆解
spring
军军君013 小时前
基于Springboot+UniApp+Ai实现模拟面试小工具二:后端项目搭建
前端·javascript·spring boot·spring·微信小程序·前端框架·集成学习
栈溢出了5 小时前
MyBatis实现分页查询-苍穹外卖笔记
java·笔记·mybatis
Linn7 小时前
Spring WebSocket 服务实现的主流方案与最佳实践
spring boot·后端·spring
NE_STOP7 小时前
SpringBoot--如何整体读取多个配置属性及其相关操作
java·spring
weixin_4569042710 小时前
Spring Boot整合MyBatis+MySQL+Redis单表CRUD教程
spring boot·mysql·mybatis
二饭10 小时前
解决Maven“无法将类 XXXXX 中的构造器 XXXXXX 应用到给定类型”错误
java·spring·maven
努力的小郑10 小时前
Spring监听器(ApplicationEvent):比MQ更轻的异步神器!亿级流量下的咖啡店经营哲学
java·后端·spring
Cyanto20 小时前
Spring注解IoC与JUnit整合实战
java·开发语言·spring·mybatis
qq_4338889320 小时前
Junit多线程的坑
java·spring·junit