Spring 如何使用Thymeleaf指定背景图像?

Spring 如何使用Thymeleaf指定背景图像?,spring,spring-boot,thymeleaf,Spring,Spring Boot,Thymeleaf,我正在用百里香学习春靴。我已将用户对象的配置文件映像存储在文件系统中,只有映像的URL是数据库中持久化的用户对象的一部分。 我已将名称和dpurl添加到模型中,以便从模板访问它 @GetMapping("/profile") public String profileController(@AuthenticationPrincipal User activeUser, Model model) { model.addAttribute("name", activeUse

我正在用百里香学习春靴。我已将用户对象的配置文件映像存储在文件系统中,只有映像的URL是数据库中持久化的用户对象的一部分。


我已将
名称
dpurl
添加到模型中,以便从模板访问它

@GetMapping("/profile")
public String profileController(@AuthenticationPrincipal User activeUser, Model model) {
            model.addAttribute("name", activeUser.getName());
            model.addAttribute("dpurl", activeUser.getDpURL());
            return "profile";
        }
我可以使用
th:text=“${name}”


然而,我不能像这样使用thymeleaf指定背景图像

<div id="dp-container" th:style="'background-image: url(' + @̣{dpurl} + ');'" >



现在我没有收到任何错误,但背景图像仍然没有显示。

如何使用Thymeleaf指定背景图像?

它可能需要如下所示:

<div id="dp-container"  th:style="'background-image:url(' + ${dpurl} + ');'">

但这取决于
dpurl
包含的内容。你真的需要使用
@{…}
?然后您应该使用
@{${dpurl}

要调试它,您应该查看源代码。它还将显示您的表达式正在解析的内容。

我已经完成了以下工作:

<td  th:style="'background: url(/images/aws2.png)'" class="fluid hero-image" >

如果您有更复杂的事情,比如需要将变量传递到url,您可以尝试以下方法:

<div id="profile_image" th:style="'background-image: url('+ @{'/view-profile-pic/' + ${result.profile_pic}} +');'"></div>

当我想显示从搜索结果中收到的个人资料图片时,我偶然发现了这个解决方案。

dpurl
包含文件系统中图像的完全限定url。。可以从webapp访问这样的磁盘文件吗。。我创建了一个简单的静态html页面,其中只有一个
属性包含光盘上图像的完全限定url,它工作正常,但当我将其移动到webapp的
静态
目录`时,图像没有显示?您将图像放在静态文件夹中,但没有看到图像。交付的html页面中生成的style属性看起来如何?@Flocke除图像外一切正常。我想问题是,图像位于不属于项目结构的目录中。托管网页无法访问project Directry之外的本地文件系统中的文件吗?@Arjun:本地,是的!您可以在同一台主机上的浏览器中从本地(windows)主机打开nerby的每个文件,这仅取决于访问权限。但是您不能在web上为客户提供该图像,因为他们的浏览器无法访问该文件。。。SpringBoot应该明确地将静态文件夹添加到路径中。因此,如果imgPath类似于“/image/myImage.jpg”,则th:style“| background image:url(${imgPath});|”应该可以工作。我认为您不需要@here。@Flocke我完全忘记了,没有控制器的帮助,tomcat和spring boot只提供来自
static
public
目录的静态内容…#1如果您想提高可读性,请使用th:style=“| background image:url(@{dpurl})|
<div id="profile_image" th:style="'background-image: url('+ @{'/view-profile-pic/' + ${result.profile_pic}} +');'"></div>
#profile_image {
margin: auto;
height: 200px;
width: 200px;
box-sizing: border-box;
border-radius: 100px;
background-size: cover; 
}