2014-06-06 5 views
4

현재 src/main/java/resources/assets 디렉토리에있는 CSS 및 js 파일 묶음이있는 봄용 MVC 응용 프로그램이 있습니다.스프링 4 정적 리소스로드

ResourceHandlerRegistry 클래스를 사용하여 템플릿 용 파일을로드하는 방법에 대한 스프링 문서 및 튜토리얼을 읽었습니다. 나는 특히 this Tutorial의 코드 스 니펫이 내 프로젝트 구조에 완벽하게 맞을 것이라고 생각했습니다.

하지만 리소스 파일에 항상 404가 있습니다. 여기

내가 현재 실행하고있어 응용 프로그램/구성 클래스입니다 : 내 HTML 파일에서 사용 여기

@Configuration 
@EnableAutoConfiguration 
@ImportResource("/applicationContext.xml") // only used for jpa/hibernate 
@EnableWebMvc 
@ComponentScan(basePackages = "at.sustain.docutools.viewer.presentation") 
public class Application extends WebMvcConfigurerAdapter { 

    public static void main(String args[]) { 
     SpringApplication.run(Application.class); 
    } 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/assets/**") 
       .addResourceLocations("classpath:/assets/"); 
     registry.addResourceHandler("/css/**") 
       .addResourceLocations("/css/"); 
     registry.addResourceHandler("/js/**") 
       .addResourceLocations("/js/"); 

    } 

} 

그리고 헤더 (자원/템플릿에 위치) :

<head> 
    <!-- local Stylesheet --> 
    <link href="css/style.css" rel="stylesheet" /> 
    <!-- local Javascript files --> 
    <script src="js/general.js"></script> 
    <script src="js/xmlhttp.js"></script> 
    <!-- local Javascript libraries --> 
    <script src="js/lib/filter.js"></script> 
    <script src="js/lib/jquery.fs.zoomer.js"></script> 
    <script src="js/lib/jquery.validate.js"></script> 
</head> 

html 파일이 내 컨트롤러 클래스를 통해 올바르게로드되지만 예를 들어 보려고 할 때 내 style.css 파일 (http://localhost:8080/css/style.css) 이미 언급 한대로 404가 표시됩니다.

스프링 4에 대해 더 많은 정보를 제공 할 수있는 리소스를 더 이상 찾을 수 없습니다. 일부 구성 파일을 놓치고 있습니까? 아니면 내 구조에 맞는 리소스 핸들러 등록이 아닙니까? 귀하의 답변을 기다리고 있습니다.

답변

9

당신의 스타일 시트와 JavaScript 파일은 "/ 자산"이라고 말합니다. "/ assets/css"및 "/ assets/js"디렉토리가 있다고 가정합니다. 당신은 다음처럼 HTML에 이러한 리소스를로드 할

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/assets/**") 
    .addResourceLocations("classpath:/assets/"); 
} 

: 그런 다음, 다음과 같은 자원 핸들러 정의 주어진

<link href="/assets/css/style.css" rel="stylesheet" /> 
<script src="/assets/js/general.js"></script> 
+0

덕분에, 조금 당황, 내 실수를했다 – SakeSushiBig