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

无法返回Thymeleaf模板求助:浏览器仅显示‘login’文本

Thymeleaf模板不渲染问题排查与解决

问题描述

Thymeleaf模板无法正常渲染,浏览器仅显示文本‘login’,而非预期的模板页面,推测问题出在配置环节但未定位到错误。


相关配置与代码

application.yml

spring:
  autoconfigure:
    exclude: org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/getyourhotel
    password: *password*
    username: root
  jpa:
    database-platform: org.hibernate.dialect.MySQL8InnoDBDialect
    generate-ddl: true
    show-sql: true
    hibernate:
      ddl-auto: update
    properties:
      hibernate:
        globally_quoted_identifiers: true
        dialect: org.hibernate.dialect.MySQL8Dialect
        format_sql: true
  sql:
    init:
      mode: never
      continue-on-error: false
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html
    mode: HTML
    cache: false

application:
  title: getyourhotel
  version: 1.0

pom.xml依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
        <version>3.2.0</version>
    </dependency>

    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

控制器代码

@PostMapping("/login")
public String login(@RequestBody @Valid User user, Model model) {
    UserDTO userDTO = userService.findUser(user);
    model.addAttribute("user", userDTO);
    return "login";
}

项目结构

templates目录位于src/main/resources下,需包含login.html模板文件。


排查与解决方案

1. 修正控制器请求体注解问题

你在控制器方法中使用了@RequestBody,该注解用于将请求体解析为JSON/XML格式的对象,而非接收表单参数。此时返回字符串"login"会被直接作为响应体输出,而非触发Thymeleaf模板渲染。

解决方式:
如果是表单提交登录,移除@RequestBody,改用表单参数接收方式:

@PostMapping("/login")
public String login(@Valid User user, BindingResult result, Model model) {
    if (result.hasErrors()) {
        return "login"; // 验证失败返回登录页
    }
    UserDTO userDTO = userService.findUser(user);
    model.addAttribute("user", userDTO);
    return "home"; // 登录成功跳转到首页,避免返回登录模板造成混淆
}

2. 检查模板文件与命名空间

  • 确认src/main/resources/templates/login.html文件存在,文件名大小写与控制器返回的视图名称一致(Linux系统下大小写敏感)。
  • 模板文件开头必须引入Thymeleaf命名空间:
<html xmlns:th="http://www.thymeleaf.org">

3. 修复自动配置项语法错误

application.yml中spring.autoconfigure.exclude末尾多了分号;,会导致配置失效,需移除:

spring:
  autoconfigure:
    exclude: org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration

4. 统一依赖版本

手动指定Thymeleaf starter版本可能与SpringBoot父工程版本冲突,建议移除版本号,使用SpringBoot统一管理的版本:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <!-- 移除手动指定的version -->
</dependency>

5. 验证表单提交逻辑

确保登录页面的表单method为post,action指向/login,避免请求方式不匹配导致逻辑异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:12:12