我正在尝试使用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/${DomainUrl}/web/资产/css/组件. css
好的,所以为了让这个工作,你必须使用预处理运算符__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/
是当前Url
在我
我找到了解决方案。我必须将链接设为文字:
<link type="text/css" th:href="@{|${DomainUrl}/web/assets/css/foundation5/normalize.css|}" rel="stylesheet" />
试试看
<link type="text/css" th:href="@{${DomainUrl + '/web/assets/css/foundation5/foundation.min.css'}}" rel="stylesheet" />
${DomainUrl}
是否以超文本传输协议://
或https://
开头?这在使用@{}
表达式创建链接时会有所不同。