如何在SpringBoot2.5.4的Thymeleaf中生成带锚点的URL链接
问题原因
你之前的写法无法生效有两个核心原因:
- Thymeleaf的
@{}链接表达式中,#符号默认会被识别为片段表达式前缀,不会被解析为URL锚点标识符 - 你写的表达式存在语法错误,括号未正确配对
正确实现方案
方案1:路径与锚点拼接(最常用,兼容性最好)
直接先生成基础路径,再拼接锚点部分即可,完全兼容Spring Boot 2.5.4内置的Thymeleaf版本:
<!-- 最终生成 /import#34546 格式的链接 --> <a th:href="@{/import} + '#' + ${object.id}">link</a>
如果你的基础路径需要携带查询参数,写法也可以兼容:
<!-- 示例:带查询参数的场景,生成如 /import?type=1#34546 的链接 --> <a th:href="@{/import(type=${type})} + '#' + ${object.id}">link</a>
注意:路径开头加
/代表从应用上下文根开始生成绝对路径,不加则是相对于当前页面路径的相对路径,你可以根据自己的实际需求调整。
方案2:字面量替换写法(适合简单场景)
也可以用Thymeleaf的字面量替换语法实现,写法更简洁:
<a th:href="|@{/import}#${object.id}|">link</a>
内容的提问来源于stack exchange,提问作者Marcos Córtes
相关产品推荐
相关产品推荐

