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

Java+Thymeleaf中HTML数据无法传递至Controller问题排查

问题描述

编写了如下CadastroController控制器类及对应的Thymeleaf表单页面,提交表单后调试发现Cliente实体的所有属性均为null。相同代码在其他电脑上可正常运行,尝试过改用ModelAndView等方法,但均未解决问题,请问可能的原因是什么?

控制器代码

@Controller
public class CadastroController {
    @Autowired
    ClienteRepository clienteRepository;

    @GetMapping("/cadastro")
    public String abrir(Cliente cliente) {
        return "cadastro";
    }

    @PostMapping("/cadastrar_cliente")
    public String cadastrar(Cliente cliente) {
        clienteRepository.save(cliente);
        return "index";
    }
}

HTML页面代码

<form action="#" th:action="@{/cadastrar_cliente}" th:object="${cliente}" method="post">        
    <label class="lbl" for="nome">Nome</label> <br> <br>
    <input th:field="*{nome}" id="nome" type=”text” placeholder="Digite seu Nome Completo:">

    <label  class="lbl" for="email">E-Mail</label> <br> <br>
    <input th:field="*{email}" id="email" type=”email” placeholder="Digite seu E-Mail:">

    <label  class="lbl" for="telefone">Telefone</label> <br> <br>
    <input th:field="*{telefone}" id="telefone" type=”tel” placeholder="Digite seu Telefone">

    <label  class="lbl" for="senha">Senha</label> <br> <br>
    <input th:field="*{senha}" id="senha" type=”password” placeholder="Digite sua senha">

    <input type="submit" value="Cadastrar"><br> <br><br> <br><br> <br>
</form>
可能的原因及解决方案
  • 表单属性引号错误:HTML代码中type属性使用了中文引号(”)而非英文双引号("),这会导致浏览器无法正确解析输入字段,Thymeleaf无法生成正确的name属性,最终参数绑定失败。将所有中文引号替换为英文双引号即可。
  • 实体类不符合绑定要求:Cliente类缺少无参构造方法、属性对应的getter/setter方法,或者属性名与表单字段不匹配(比如大小写不一致)。确保实体类是public修饰,每个属性都有公开的getter/setter,且存在无参构造。
  • 依赖版本不一致:本地项目的Spring Boot、Thymeleaf依赖版本与正常运行的环境不同,部分版本存在参数绑定兼容性问题。检查pom.xml或build.gradle中的依赖版本,与正常环境保持一致。
  • IDE缓存或编译问题:IDE编译缓存导致实体类或控制器未正确编译。尝试清除IDE缓存(如IntelliJ IDEA的File -> Invalidate Caches...),然后重新编译项目。
  • 请求编码配置问题:本地服务器的请求编码设置错误,导致表单参数无法被正确解析。在application.properties中添加以下配置确保编码统一:
    server.servlet.encoding.force=true
    server.servlet.encoding.charset=UTF-8
    server.servlet.encoding.enabled=true
    
  • WebMvc配置异常:自定义的WebMvcConfigurer实现覆盖了默认的参数绑定逻辑,导致请求参数无法正常映射到实体类。检查项目中是否有自定义的WebMvc配置,确认未修改默认的参数绑定规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:11:33