spring-boot - Springboot Thymeleaf 在控制器中使用多级路径时无法找到静态资源
问题描述
我正在使用带有百里香叶的 Springboot mvc。我有一个典型的项目结构。当我映射一个简单的路径时它能够加载静态资源,但当http://<context-url>/anything
我使用多级路径时它不起作用http://<context-url>/controllerpath/anything
。
端点示例如下:它正在工作
@GetMapping(path="/list")
public ModelAndView getAdminList() {
List<Admin> adminList = adminService.getAdminList();
System.out.println(adminList);
ModelAndView mav = new ModelAndView("home/main");
mav.addObject("name", "Test");
mav.addObject("list", adminList);
return mav;
}
但是当我尝试在@Getmapping
路径中添加一些东西时
@GetMapping(path="/admin/list")
public ModelAndView getAdminList() {
List<Admin> adminList = adminService.getAdminList();
System.out.println(adminList);
ModelAndView mav = new ModelAndView("home/main");
mav.addObject("name", "Test");
mav.addObject("list", adminList);
return mav;
}
它加载模板,但不加载 js 和 css 等静态资源。
我尝试添加../
模板
<link href="../dist/css/style.min.css" rel="stylesheet">
<script src="../assets/libs/popper.js/dist/umd/popper.min.js"></script>
<script src="../assets/libs/bootstrap/dist/js/bootstrap.min.js"></script>
然后它可以工作,但我不想../
在我的模板中使用。我们是否有任何其他配置可以解决此问题。TIA。
解决方案
您在模板中链接的资源不应与当前路径相关。当您不使用 a 启动资源 src/href 路径时,/
它们会变成相对 URL。因此,您需要从以 . 开头的根目录指定 src/href 路径/
。
因此,在您的情况下,它将是:/dist/css/style.min.css
和/assets/libs/<file names>
.
Thymeleaf 提供了一个方便的功能,可以通过@{}
. Using@{}
将自动将上下文路径(如果有)添加到所有 URL。正如@Kedar 的评论中提到的那样,您最终会得到以下结果:
<link th:href="@{/dist/css/style.min.css}" rel="stylesheet">
<script th:src="@{/assets/libs/popper.js/dist/umd/popper.min.js}"></script>
<script th:src="@{/assets/libs/bootstrap/dist/js/bootstrap.min.js}"></script>
推荐阅读
- node.js - 如何在 Gatsby 中将 http 重定向到 https?
- javascript - 在 setState 之后反应原生不重新渲染
- python-3.x - 如何使用forloop并排绘制图表
- reactjs - 像“useLocation”这样的反应路由器钩子的存根不起作用
- angular - 角度文件上传传递图像作为[对象文件]
- android-studio - 在将 jsoup 与 android studio 一起使用时,我在更高的 android api 版本中收到“太多重定向错误”
- php - 从数据库查询到字符串的数组 - 非常具体的问题
- python-3.x - Using dataframe operations, determine how long, in days a given name in the dataset lived
- php - 如果您在 PHP 中退出,如何显示?
- android - 尝试从 Firebase 下载时应用崩溃