You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot表单提交获取空输入问题求助

解决Spring Boot表单提交后输入值为null的问题

看起来你在Spring Boot+Thymeleaf的表单提交中遇到了所有输入值都为null的问题,我帮你梳理几个最可能的原因和对应的解决办法:

  • 先检查实体类的属性匹配度与基础结构
    你表单里用了th:field="*{_FirstName}",首先要确认你的实体类(比如叫Info)里确实有一个名为_FirstName的属性,而且必须有对应的getter和setter方法——Spring MVC正是通过这些方法来给属性赋值的。如果实体类里的属性是驼峰命名的firstName,那你得把th:field改成*{firstName},字段名必须严格对应,大小写也不能错。
    另外,实体类一定要有无参构造函数,如果只写了带参构造,Spring没办法自动实例化对象,自然没法注入值,所有属性都会是null。

  • 修正控制器的请求处理逻辑
    首先,在跳转到表单页面的GET方法里,你需要把空的实体对象放到Model中,这样Thymeleaf的th:object="${info}"才能找到绑定的对象:

    @GetMapping("/form")
    public String showForm(Model model) {
        model.addAttribute("info", new Info()); // 必须初始化并添加到模型
        return "form";
    }
    

    然后,处理POST请求的/save方法里,要给参数加上@ModelAttribute("info")注解,确保Spring能正确把表单数据绑定到实体对象上:

    @PostMapping("/save")
    public String saveInfo(@ModelAttribute("info") Info info) {
        // 在这里处理info对象,比如存数据库
        return "redirect:/success";
    }
    
  • 清理表单里的冗余Thymeleaf属性
    你的表单同时写了th:object="${info}"和commandName="info",commandName是Spring MVC的旧属性,和Thymeleaf的th:object功能重复,建议删掉commandName="info",避免出现绑定冲突。另外,th:field会自动生成输入框的name属性,不需要手动设置,保持th:field的表达式和实体类属性一致就好。

按照这几个步骤排查下来,应该就能解决提交后值为null的问题啦。

内容的提问来源于stack exchange,提问作者Fahim Uddin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:03:17