Bat*_*ato 11 java thymeleaf spring-boot
首先要说的是,我现在一直在寻找解决方案,现在我非常绝望.
我在Spring Boot运行时无法从html页面访问css文件.
html.file
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head lang="en">
<title th:text='#{Title}'>AntiIntruder</title>
<meta charset="UTF-8" />
<link rel="stylesheet" type="text/css" media="all" href="../assets/css/style.css" th:href="@{/css/style.css}" />
</head>
<body>
...
Run Code Online (Sandbox Code Playgroud)
Application.java
@SpringBootApplication // adds @Configuration, @EnableAutoConfiguration, @ComponentScan
@EnableWebMvc
public class Application extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets/*");
}
}
Run Code Online (Sandbox Code Playgroud)
文件夹结构:

我已经尝试将css文件夹放入static文件夹和/或删除addResourcesHandlers,通过相对路径和其他一些东西引用css.似乎没有解决这个问题.请让我知道,如果你试图解决这个问题,但没有找到解决办法,那么我知道,我不会被忽视.
Far*_*ook 29
1.使用自定义资源路径
在您的Web配置中
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!registry.hasMappingForPattern("/assets/**")) {
registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets/");
}
}
Run Code Online (Sandbox Code Playgroud)
将您的style.css文件放在此文件夹中
src/main/resources/assets/css/
在你的意见之后
<link rel="stylesheet" type="text/css" th:href="@{/assets/css/style.css}" />
Run Code Online (Sandbox Code Playgroud)
.
2.在弹簧引导中使用预定义路径
addResourceHandlers从您的网络配置中删除
将style.css内置任何以下文件夹放入其中
src/main/resources/META-INF/resources/assets/csssrc/main/resources/resources/assets/css/src/main/resources/static/assets/css/src/main/resources/public/assets/css/并在视图中
<link rel="stylesheet" type="text/css" th:href="@{/assets/css/style.css}" />
Run Code Online (Sandbox Code Playgroud)
.
注意:您可以在assets此处删除该文件夹.如果要执行此操作,请将其从预定义的资源文件夹以及视图中删除th:href.但我保持原样,因为你明确提到了assets/问题中的路径.所以我相信assets/你的资源网址是你的要求.
如果将 css 放在 static 文件夹中,则不需要 addResourceHandlers 方法。
.../static/css/app.css
Run Code Online (Sandbox Code Playgroud)
或者,如果您真的想将它们放在 assets 文件夹中:
.addResourceLocations("classpath:/assets/") <-- without the * at the end
.../assets/css/app/css
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,css 应该可以通过
th:href="@{/css/app.css}"
Run Code Online (Sandbox Code Playgroud)
问题是文件中的@EnableWebMvc注释Application.java。一旦我删除了那个CSS,css就可以开始使用了,localhost:8080/css/style.css但是没有应用。到目前为止,我还没有找到@EnableWebMvc引起问题的原因。
然后/**,为了显示自定义错误页面,我删除了已映射到已实现的控制器。
@RequestMapping("/**")
public String notFound() {
return "errors/404";
}
Run Code Online (Sandbox Code Playgroud)
删除了这一个后,我的CSS也开始工作了。=)
| 归档时间: |
|
| 查看次数: |
23826 次 |
| 最近记录: |