带变量的百里香绝对 URL

Posted

技术标签:

【中文标题】带变量的百里香绝对 URL【英文标题】:thymeleaf absolute URL with variable 【发布时间】:2018-04-09 10:04:07 【问题描述】:

我正在尝试使用 Thymeleaf 将域 url 注入到链接中。我的 url 正在从控制器传递,因为我输入了日志并看到了它。

我的链接在我的 Thymeleaf html 模板中是这样的:

<link type="text/css" th:href="@$DomainUrl/web/assets/css/foundation5/foundation.min.css" rel="stylesheet" />

但是,当我在本地运行它时,它不会替换域,例如,会引发错误(因为当然找不到 URL)呈现如下: http://localhost:8081/pss/ui/$%7BDomainUrl%7D/web/assets/css/components.css

【问题讨论】:

应该像那样工作。也许DomainUrl视图变量没有设置?? 我确实添加它并记录以确保它被填充.. mav.addObject("DomainUrl", ctx.getDomainUrl()); [[$DomainUrl]] 作为文本节点(html 中的简单文本)添加到您的标记中,是否呈现给定域? 是的,它确实会打印出来。我发现有一个基本 url 标签,这就是它放入域的原因,但是,我删除了它,当它是一个链接时,例如: 仍然没有填充正确的域,也许是控制器中的一个标签使链接相对.关于我可以寻找什么 Spring bean 的任何想法? 所以你需要相对或绝对因为我现在迷路了?检查有关该主题的百里香文档。也许 # 个 bean 中的一个会有所帮助 【参考方案1】:

我找到了解决方案。我不得不将链接变成文字:

<link type="text/css" th:href="@|$DomainUrl/web/assets/css/foundation5/normalize.css|" rel="stylesheet" />

【讨论】:

【参考方案2】:

好的,为了让它工作,你必须使用预处理运算符__expression__ 来获取属性链接,这样你最终会得到这样的想法

<link type="text/css" th:href="@__$DomainUrl__/web/assets/css/foundation5/foundation.min.css" rel="stylesheet" />

这将预处理和解析$DomainUrl 表达式,并将结果字符串传递给@ 表达式处理器。经过测试并像魅力一样工作:

<a th:href="@__$currentUrl__/blah/blah/blahhhh">hey there</a>

生成

<a href="http://localhost:8080/admin/place/list/blah/blah/blahhhh">hey there</a> 

其中http://localhost:8080/admin/place/list/currentUrl

在我的

【讨论】:

应该被接受的答案或者至少应该提到为什么这个答案没有解决这个问题(它对我有用)【参考方案3】:

试试

<link type="text/css" th:href="@$DomainUrl + '/web/assets/css/foundation5/foundation.min.css'" rel="stylesheet" />

$DomainUrl 是以 http:// 还是 https:// 开头的?这在使用 @ 表达式创建链接时会有所不同。

【讨论】:

你能详细说明一下区别吗 当你说“绝对网址”时,它有一个特定的含义——它以http://https:// 开头。请参阅百里香文档:thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#link-urls。至于我做的链接,你不能像你那样混合不加引号的字符串和变量。这就是为什么我将 URL 的其余部分放在 $ 中。 啊我明白你的意思了。我知道 https 和 http 在这里有所作为......交替方案在这里很混乱

以上是关于带变量的百里香绝对 URL的主要内容,如果未能解决你的问题,请参考以下文章

如何将整数附加到 url 脚本内联百里香?

如何将两个参数传递给百里香模板?

如何控制百里香中的href属性

尝试百里香没有成功

百里香中的for循环

百里香块失去风格