所以我试图通过Thymeleaf生成(动态)链接。
现在我要链接的第一个网址是/ resource / id,所以我有以下内容:
<a th:href="|/resource/${resource.id}|" href="#" class="btn btn-default">Edit...</a>
哪种方法效果很好,并且完全符合您的期望。
所以我要链接的下一个网址是/ resource / id / child / id,所以我尝试以下方法:
<a th:href="|/resource/${resource.id}/child/${child.id}|" href="#" class="btn btn-default">Edit...</a>
我认为这会给我我想要的东西。相反,我得到:
/resource/3/child%7D?id=4
这很奇怪而且令人困惑。我不确定为什么会发生这种情况或如何得到我想要的东西:
/resource/3/child/4
任何帮助非常感谢。如果它有任何不同,我正在使用spring-boot / spring-mvc。
更新: 好的,所以在重新阅读(并理解)文档之后,事实证明语法更正确:
<a th:href="@{/resource/{rid}/child/{cid}(rid=${resource.id} cid=${child.id})}" href="#" class="btn btn-default">Edit...</a>
现在我得到了网址:
/resource/3/child?id=4
虽然非常接近但仍然有点错误和令人困惑。
Thymeleaf不支持多个路径变量吗?
答案 0 :(得分:2)
我认为缺少逗号。试试这样:
th:href="@{/resource/{rid}/child/{cid}(rid=${resource.id},cid=${child.id})}"
每个键/值应使用逗号分隔,以便正确构建具有多个路径变量的URL。
答案 1 :(得分:0)
使用网址时,最好使用网址语法@ {...}而不是字面替换。 例如,在您的情况下:
<a th:href="@{/resource/{resource.id}/child/{child.id}}"
href="#" class="btn btn-default">Edit...</a>
(注意休息资源占位符中没有美元符号)
答案 2 :(得分:0)
你检查了child.id的值吗?我经常使用@{|/resource/${resource.id}/child/${child.id}|}
。
您可以评估语法
<a th:with="child_id='4'" th:href="@{|/resource/${resource.id}/child/${child_id}|}"
并将<span th:text="${child.id}"></span>
添加到您的html中,以查看child.id
的值。