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会自动将 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(“变量名字”)
相关推荐
萧瑟余晖9 小时前
Spring Security会话管理与CSRF详解
spring·csrf
Wx-bishekaifayuan10 小时前
springboot铜仁非遗之家76938-计算机课程设计、毕业设计
java·spring boot·后端·spring·django·课程设计·旅游
青春不朽51211 小时前
Python 里 a is b 有时 True 有时 False?小整数缓存和常量折叠的底层真相
python·spring·缓存
苏渡苇11 小时前
Spring Insight:跨服务调用链路是怎么串起来的?
spring boot·后端·spring·系统监控·apm
夕除12 小时前
redis--主从还是集群,内存
java·spring·mybatis
驭渊的小故事13 小时前
MyBatis-Plus 实战指南:从基础 CRUD 到条件构造器与自定义 SQL(二)
数据库·sql·mybatis
霸道流氓气质13 小时前
AI 简历制作平台:结构化输出解析、多模板渲染与 PDF 导出的 Vue3 + Spring AI 全栈实战
人工智能·spring·pdf
打工仔折腾 AI13 小时前
Spring AI + Qwen 周报生成实战:从原始日志到人工确认卡
人工智能·后端·python·spring·elasticsearch·ai agent 实战
开开心心就好13 小时前
手机电池健康怎么查?看容量温度循环次数
spring·智能手机·ffmpeg·计算机外设·电脑·maven·音视频