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

Thymeleaf中带变量的服务器相对URL生成语法问题

解决Thymeleaf生成服务器相对URL的变量解析问题

问题原因

你之前的写法错误在于把Thymeleaf变量表达式(${})直接嵌入到了URL表达式的字符串拼接中,Thymeleaf的@{}语法不会解析内部嵌套的${}表达式,导致变量未被替换直接输出。

正确写法

方法1:使用Thymeleaf URL表达式的占位符语法(推荐)

利用Thymeleaf URL表达式的变量占位功能,这种方式更符合框架规范,可读性更强:

<img th:src="@{~/puzzles/{dirName}/{puzzleName}.png(dirName=${category.dirName}, puzzleName=${category.randomPuzzleName})}" />
  • @{~/...} 表示服务器相对URL,会自动忽略应用上下文路径(比如你的/www),直接生成根路径开头的URL。
  • {dirName} 和 {puzzleName} 是URL中的占位符,后面括号里的dirName=${category.dirName}用于绑定变量值,Thymeleaf会自动完成拼接。

方法2:直接拼接字符串表达式

如果更习惯字符串拼接的方式,可以直接用Thymeleaf的变量表达式生成完整路径:

<img th:src="${'/puzzles/' + category.dirName + '/' + category.randomPuzzleName + '.png'}" />

这种方式直接生成绝对路径字符串,绕过Thymeleaf的URL解析器,同样能得到你需要的/puzzles/xxx/xxx.png格式。

验证效果

两种方法最终都会生成你期望的HTML代码:

<img src="/puzzles/3DMathPuzzles-Cube-555/3DMathPuzzle-Cube-555-00011-5.png" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:37:09