首页 > 解决方案 > Thymeleaf - url 问题:如何使用对象变量命名 url

问题描述

我是 Thymeleaf 的新手,我正在使用 Springboot。我正在尝试做一些非常简单的事情:我有一个 url,我想在不编辑 url 链接的情况下编辑文本。

这有效(它向我显示网站地址作为 url,我实际上可以点击它):

<a th:text="${c.getWebsite()}" th:href="${c.getWebsite()}"> Website </a>

这也有效(按钮称为“查看”,但超链接有效):

<a th:href="@{'/company/' + ${c.getId()}}" class="btn btn-primary"> <i class="fas fa-building"></i>&nbsp;View </a>

我想在按钮上写的不是视图,而是公司名称。由于某种原因,这不起作用:

<a th:text="${c.getName()}" th:href="@{|/company/${c.getId()}|}">Name</a>

当我检查元素时,我看到了这个:

<a href="/company/123456">Test Company</a>

所以这似乎是正确的,但它不允许我点击它。我尝试了很多不同的组合,并且还阅读了有关url 语法的 thymeleaf 文档,但到目前为止还没有运气。有人可以帮忙吗?谢谢!

注意:这是表格的一部分……“公司名称”(我想变成一个 url)在表格的第 3 列,然后网站有点远;最后,“查看”按钮位于最后一列。按钮视图有效,当我将该按钮的代码复制到第三列而不做任何更改时,它停止工作(它只显示按钮,但没有 url 工作,即使当我检查元素时,url 是那里)。这很奇怪,我在 chrome 和 edge 上都有。

标签: spring-booturlthymeleaf

解决方案


我不太确定,但发现工作链接标签和非工作链接标签之间的 href 属性存在差异,这可能会导致问题:工作链接有单个撇号,而另一个有管道......

th:href="@{'/company/' + ${c.getId()}}"
th:href="@{|/company/${c.getId()}|}"

这能解决你的问题吗?

顺便说一句:您不需要调用吸气剂。

${c.id}

……是一样的……

${c.getId()}

...,但更短且可读性更好。


推荐阅读