• ssm日常项目中问题集合


    一、

    Spring MVC和Spring Boot中,如果你的控制器方法参数被标注为一个Java对象,并且该对象的字段与表单输入字段的名称匹配,Spring会自动将表单数据绑定到该对象上。这种机制称为数据绑定(Data Binding)。

    假设你有一个表单如下:

    1. <form id="searchForm" th:action="@{/search}" method="get">
    2. <input id="nameInput" type="text" name="name" placeholder="Name" required>
    3. <input id="idInput" type="text" name="id" placeholder="ID" required>
    4. <button type="submit">Search</button>
    5. </form>

    你的控制器方法可以定义为:

    1. @Controller
    2. public class SearchController {
    3. @GetMapping("/search")
    4. public String search(User user, Model model) {
    5. // user 对象会自动填充表单提交的数据
    6. // 你的处理逻辑
    7. model.addAttribute("result", searchService.search(user));
    8. return "searchResults";
    9. }
    10. }

    假设你有一个 User 类:

    1. public class User {
    2. private String name;
    3. private String id;
    4. // getters and setters
    5. }

    在这种情况下,当表单提交时,Spring会自动将表单数据绑定到 User 对象上。这是因为表单中的 name 属性与 User 类中的字段名称匹配。

    数据绑定示例

    1. 实体类

      1. public class User {
      2. private String name;
      3. private String id;
      4. // getters and setters
      5. }
    2. 控制器

      1. @Controller
      2. public class SearchController {
      3. @GetMapping("/search")
      4. public String search(User user, Model model) {
      5. // 表单数据已经被绑定到 user 对象
      6. // 处理逻辑
      7. model.addAttribute("result", searchService.search(user));
      8. return "searchResults";
      9. }
      10. }
    3. 表单

      1. <form id="searchForm" th:action="@{/search}" method="get">
      2. <input id="nameInput" type="text" name="name" placeholder="Name" required>
      3. <input id="idInput" type="text" name="id" placeholder="ID" required>
      4. <button type="submit">Search</button>
      5. </form>

    这样,当你提交表单时,Spring会自动将 name 和 id 字段的值填充到 User 对象的对应字段中。你可以在控制器方法中直接使用这个 User 对象来处理业务逻辑。

    二、

    在前端通过表单提交数据时,如果你同一前端页面中有其他表单设置了阻止超链接的默认行为,导致其他功能的表单无法提交。

    你可以选择通过具体的表单名字取阻止默认行为

    1. <form id="deleteFrom" method="post">
    2. <input type="hidden" name="_method" value="delete">
    3. form>
    4. ============================================
    5. var vue = new Vue({
    6. el:"#app",
    7. methods:{
    8. deleteUser(event){
    9. //获取form 表单
    10. var form = document.getElementById("deleteFrom");//通过具体的id
    11. //将超链接的href属性赋值给form表单的action属性
    12. //event.target表示当前触发事件的标签
    13. form.action = event.target.href;
    14. //表单提交
    15. form.submit();
    16. //阻止超链接的默认行为
    17. event.preventDefault();
    18. }
    19. }
    20. });

    而不是下面这种方法

       var form = document.getElementById().from[0];

    三、

    如果是通过在地址后面添加变量的方法获取数据

    要注意在Controller类对应方法传递数据时要在形参前面加上

    @PathVariable(“变量名字”)
  • 相关阅读:
    PID与ADRC
    k8s day07
    【2023联发科提前批笔试题】~ 题目及参考答案
    JS操作dom元素(一)——获取DOM节点的六种方式
    低代码与AIGC技术:重塑软件开发的新篇章
    行业类软文有哪些?媒介盒子告诉你
    Day 44 Ansible自动化运维
    编程思维是一种什么思维?
    哪种网站适合物理服务器
    数据库优化
  • 原文地址:https://blog.csdn.net/wudi6688/article/details/139996962