Tymeleaf가 있는 Spring Boot - CSS를 찾을 수 없음
먼저 말씀드릴 것은 제가 지금 한동안 해결책을 모색하다가 지금 상당히 절박하다는 것입니다.
Spring Boot로 실행 시 cs 파일을 html 페이지에서 접근할 수 없습니다.
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>
...
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/*");
}
}
폴더 구조:
제가 한번 넣어봤는데요.css
폴더를 에 넣다static
폴더 및/또는 addResourcesHandler를 제거합니다. 상대 경로별 CSS 및 기타 사항을 참조합니다.그 어떤 것도 이 문제를 해결할 수 없을 것 같습니다.만약 당신이 이 문제를 해결하려고 했지만 해결책을 찾지 못했다면 제가 무시당하지 않는다는 것을 알 수 있도록 저에게도 알려주세요.
1. 사용자 지정 리소스 경로 사용
웹 구성에서
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!registry.hasMappingForPattern("/assets/**")) {
registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets/");
}
}
당신의 것을.style.css
이 폴더 안의 파일
src/main/resources/assets/css/
당신이 보기에 그 이후는
<link rel="stylesheet" type="text/css" th:href="@{/assets/css/style.css}" />
.
2. 스프링 부트에서 미리 정의된 경로 사용
제거한다.addResourceHandlers
웹 환경설정에서
집어넣어요style.css
다음 폴더 안에
src/main/resources/META-INF/resources/assets/css
src/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}" />
.
참고: 다음을 제거할 수 있습니다.assets
여기 폴더.이 작업을 수행하려면 미리 정의된 리소스 폴더와 보기에서 제거하십시오.th:href
. 하지만 당신이 명시적으로 언급했기 때문에 저는 그대로 유지했습니다.assets/
당신의 질문에 경로가 있습니다.그래서 저는 당신이 필요로 하는 것이assets/
사용자의 리소스 URL에 입력합니다.
는 .@EnableWebMvc
Application.java
파일을 제거하자 마자 CSS를 사용할 수 있게 되었습니다.localhost:8080/css/style.css
적용되지 않았습니다.지금까지 그 이유를 찾지 못했습니다.@EnableWebMvc
문제를 일으키고 있었습니다
그런 다음에 다음과 같은 매핑된 컨트롤러를 제거했습니다./**
사용자 정의 오류 페이지를 표시하기 위해 구현한 것입니다.
@RequestMapping("/**")
public String notFound() {
return "errors/404";
}
이것도 제거하고 CSS도 작동중입니다. =)
정적 폴더에 CSS를 넣으면 addResourceHandler 메서드가 필요 없습니다.
.../static/css/app.css
또는 자산 폴더에 저장하려면 다음을 수행해야 합니다.
.addResourceLocations("classpath:/assets/") <-- without the * at the end
.../assets/css/app/css
두 경우 모두 CSS는 다음을 통해 사용 가능해야 합니다.
th:href="@{/css/app.css}"
CSS 폴더를 리소스/정적 폴더에 넣습니다.
제 경우에는 파일 읽기 권한에 문제가 있었습니다.다른 프로젝트에서 'style.css' 파일을 복사했는데 브라우저에서 읽을 수 없습니다.style.css'를 다시 생성한 후 모든 것이 정상적으로 작동했습니다.
제 충고는 다음과 같습니다.css
아래 폴더static
폴더, addResourceHandler를 제거하고 절대 경로로 cs에 도달합니다(예:/css/style.css
).
그래서 저는 타임리프에서 작동하기 위해서 스타일시트에 대한 고정적인 참조를 제거해야 했기 때문에.
<link rel="stylesheet" type="text/css" media="all" href="../assets/css/style.css" th:href="@{/css/style.css}">
되었다
<link rel="stylesheet" th:href="@{/css/bootstrap.css}">
저는 여러 종류의 구성과 파일 경로 이름 변경을 시도하는 데 몇 시간을 보냈습니다.이유는 모르겠지만 이것이 스프링 부츠 5에서 내 CSS와 js를 로드하게 한 유일한 것입니다.
먼저 WebMvcConfigurer로 구성 클래스 중 하나를 구현합니다.
@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {
//and overide this configuration method like this
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/webjars/**", "/resources/**");
}
}
이제 이렇게 HttpSecurity 구성을 덮어쓸 수 있습니다.
@EnableWebSecurity
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter{
@Override
public void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/index").anonymous()
.antMatchers("/**/*.*").permitAll()
.anyRequest().authenticated();
}
}
this ("/**/*.*") regex text will allow files with anny extension
부트스트랩과 같은 웹자 라이브러리를 사용하는 경우 이 구성을 WebSecurityConfiguration에 추가합니다.
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
이 주제가 2022년에도 여전히 관련이 있다면요.저도 비슷한 문제가 있었는데 이렇게 해결했습니다.
/templates/file.html의 이 링크
<link rel="stylesheet" type="text/css" media="all" ref="../static/css/styles.css">
application.properties 를 추가했습니다.
spring.mvc.static-path-pattern=/static/**
저의 css 경로는
src/main/resources/static/css/
언급URL : https://stackoverflow.com/questions/29562471/springboot-with-thymeleaf-css-not-found
'programing' 카테고리의 다른 글
Pandas DataFrame에 대한 인덱스를 1에서 시작합니다. (0) | 2023.10.19 |
---|---|
argv의 문자열을 수정할 수 있습니까? (0) | 2023.10.19 |
안드로이드에서 회전하는 원형 프로그레스 바를 만드는 방법? (0) | 2023.10.19 |
mysql 클라이언트의 필드 코멘트는 어떻게 볼 수 있습니까? (0) | 2023.10.19 |
JavaScript에서 개체 복제 (0) | 2023.10.19 |