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

Thymeleaf 2.5.6使用变量表达式提示cannot Resolve variable name原因是什么

问题原因分析
  • 注解使用错误
    你当前使用的是@RestController注解,该注解是@Controller与@ResponseBody的组合注解,默认所有方法的返回值会直接作为响应体输出,不会触发Thymeleaf的视图解析流程,需要替换为@Controller注解才能正常渲染模板。
  • 方法缺少请求映射
    你的process处理方法没有添加@GetMapping/@RequestMapping等请求映射注解,Spring无法将请求路由到该方法执行,today变量从未被写入Thymeleaf上下文,模板渲染时自然找不到对应变量。
  • 日期格式化配置错误(额外问题)
    你使用的dd-mm-yyyy格式化串中小写mm代表分钟,大写MM才代表月份,会导致输出的日期不符合预期。
  • 若仅IDE静态提示报错、运行正常
    属于IDE的Thymeleaf静态检测局限性,在模板文件开头添加变量声明注释即可消除提示:<!--/*@thymesVar id="today" type="java.lang.String"*/-->
修正后的代码
package com.nilmani.thymeleafdemo.controller

import org.springframework.stereotype.Controller
import org.springframework.web.bind.annotation.GetMapping
import org.thymeleaf.ITemplateEngine
import org.thymeleaf.context.WebContext
import java.text.SimpleDateFormat
import java.util.*
import javax.servlet.ServletContext
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse

@Controller
class HomeController : IGTVGController() {
    @GetMapping("/home")
    @Throws(Exception::class)
    fun process(request:HttpServletRequest,response: HttpServletResponse,
               servletContext: ServletContext,templateEngine: ITemplateEngine){
        val dateForm:SimpleDateFormat= SimpleDateFormat("dd-MM-yyyy")
        val calendar:Calendar = Calendar.getInstance()
        val ctx : WebContext = WebContext(request,response,servletContext,request.locale)
        ctx.setVariable("today",dateForm.format(calendar.time))
        templateEngine.process("home",ctx,response.writer)
    }
}
可选优化方案

Spring Boot项目中不需要手动调用模板引擎的process方法,更简洁的写法如下:

@Controller
class HomeController {
    @GetMapping("/home")
    fun home(model: Model): String {
        val dateForm = SimpleDateFormat("dd-MM-yyyy")
        model.addAttribute("today", dateForm.format(Date()))
        return "home"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:54:03