提问者:小点点

thymeleaf th: src与服务器相对url中的变量


我有一个问题,找出语法来生成一个服务器相关的URL变量替换。

如果我这样做:

<img th:src="@{~'/puzzles/'+${category.getDirName()}+'/'+${category.getRandomPuzzleName()}+'.png'}"/>

Thymeleaf将代码输出到页面源:

<img src="~&#39;/puzzles/&#39;+${category.getDirName()}+&#39;/&#39;+${category.getRandomPuzzleName()}+&#39;.png&#39;"/>

如果我删除波浪号(所以它现在是一个上下文相关的url):

<img th:src="@{'/puzzles/'+${category.getDirName()}+'/'+${category.getRandomPuzzleName()}+'.png'}"/>

Thymeleaf解释变量并给我这个输出:

<img src="/www/puzzles/3DMathPuzzles-Cube-555/3DMathPuzzle-Cube-555-00011-5.png"/>

但是,当然URL不是我想要的,因为它有'/www'上下文。

我希望标签是这样的:

<img src="/puzzles/3DMathPuzzles-Cube-555/3DMathPuzzle-Cube-555-00011-5.png"/>

有什么办法吗?


共1个答案

匿名用户

没有在Thymeleaf中使用服务器相关URL,但是如果我正确理解留档,~需要成为字符串的一部分:

<img th:src="@{'~/puzzles/'+${category.getDirName()}+'/'+${category.getRandomPuzzleName()}+'.png'}"/>

如果这不起作用,请尝试URL占位符语法:

<img th:src="@{~/puzzles/{dir}/{name}.png(dir=${category.getDirName()}, name=${category.getRandomPuzzleName()})}"/>