Thymeleaf链接表达式表达式指向的位置随当前URL改变而改变,如何使其指向固定的位置?
Spring-Boot 2.7.11
Thymeleaf
Eclipse + Spring Tools
Spring Boot中控制器路径为
@GetMapping("/{var1}/{var2}")
public String controller(@PathVariable String var1, @PathVariable String var2)
时
无论Thymeleaf模版中静态文件的路径写成
<img th:src="@{images/image.png}"/>
还是
<img src="images/image.png" />
渲染后都是
<img src="images/image.png" />
css也同样无法加载,无论写的是
<link rel="stylesheet" th:href="@{style/styles.css}">
还是
<link rel="stylesheet" href="style/styles.css">
都会渲染成用
<link rel="stylesheet" href="style/styles.css">
并且用浏览器的开发者工具查看后发现css文件的目录是/var1/style/styles.css
再尝试将Controller的路径进行修改,改为
@GetMapping("/test/{var1}/{var2}")
则css文件的路径变为/test/var1/style/styles.css
而如果将控制器中的路径改为
@GetMapping("/{var1}/{var2}/{var3}")
则会变成/var/var2/style/styles.css
期待的结果是链接指向项目的resource文件夹中的静态资源,
但实际上网页请求静态文件时会根据当前url改变位置
@{...}是链接URL表达式,目的是加载特定的资源(以URL形式),
所以
<img th:src="@{images/image.png}"/>
就等价于请求
http://localhost:8080/webapp/images/image,然后把相应的对象发送回给客户端进行解析和显示,也就是会走springMvc的请求了。
所以要么你直接写:
<img src="images/image.png" alt="..." />
要么考虑用nginx做一个静态资源服务器,设置凡是走/images路径的匹配到图片资源目录
@{path/file.ext}
和path/file.ext
都是相对路径,要以Spring Boot指定的静态资源目录为链接表达式的根目录,应使用绝对路径
<img th:src="@{/images/image.png}"/>
而静态资源地址和控制器路径冲突,则依据具体需求通过正则表达式修改控制器路径的描述即可
我的双链表有两个虚拟节点,头部和尾部。函数对我来说非常适合,但是当我尝试使用与相同的算法时,它会一直为我打印虚拟节点。为什么会这样? 预期结果: 我的结果:
我正在使用Bootstrap4框架创建一个移动第一站点。我正在尝试创建一个JavaScript函数,它将在
本文向大家介绍js中的如何定位固定层的位置,包括了js中的如何定位固定层的位置的使用技巧和注意事项,需要的朋友参考一下 需要获取一些HTML的对象的坐标来更灵活的设置目标层的坐标,这里可以通过用到document.body.scrollTop等属性,但是这些属性在xhtml的标准网页中或更简单的说就是带<!DOCTYPE...>的标签中得到的值是0;如果不要此标签则一切正常,那么在xhtml中如何
本文向大家介绍Spring Boot 中的静态资源放置位置,包括了Spring Boot 中的静态资源放置位置的使用技巧和注意事项,需要的朋友参考一下 当我们使用 SpringMVC 框架时,静态资源会被拦截,需要添加额外配置,之前老有小伙伴在微信上问松哥Spring Boot 中的静态资源加载问题:“松哥,我的HTML页面好像没有样式?”,今天我就通过一篇文章,来和大伙仔细聊一聊这个问题。 SS