2016-11-23 108 views
0

我正在使用Spring 4.3.4 + Spring MVC + Thymeleaf 3.0.2開發webapp。順便說一下,我還沒有集成Spring Security,所以沒有任何安全策略。Spring MVC 4 + Thymeleaf:靜態資源404錯誤

問題很簡單:瀏覽器上沒有加載靜態資源(錯誤404)

這是我的項目文件夾結構,這是一個標準的Maven結構(我已經穿上/src目錄/主/資源靜態資源/靜態,但我也試過/src目錄/主/ web應用//src目錄/主/ web應用/ WEB-INF/):

enter image description here
,這是,例如,如何我在我的網頁鏈接CSS(相信我,文件/src/main/resources/static/assets/css/style.css確實存在):

<link th:href="@{/assets/css/style.css}" type="text/css" /> 

據我知道我不應該需要對/src目錄一ResourceHandler處理內容/主/ resourcess /靜態/資產/,應已提供/資產/,但它不能正常工作,所以在我的Spring Java配置,我也做了也試了幾次,如:

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

在任何情況下,CSS和JS文件都不可訪問。

我的分發程序Servlet被映射到根/:

<servlet-mapping> 
    <servlet-name>myappDispatcherServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

如果我檢查HTML瀏覽器的,我可以看到上面的標籤變成:

<link href="/myapp/assets/css/style.css" rel="stylesheet" type="text/css"> 

,看起來很正確的給我,對?

那麼,如果我嘗試訪問css,爲什麼會收到404錯誤?我忘記了一些重要的東西嗎?

謝謝
盧卡

回答

1

爲了解決我需要改變我的文件夾結構的問題,動靜態資源爲/webapp/文件夾。我敢肯定是有辦法離開CSS和JS到/資源/文件夾,但我沒有做它的工作,所以這是我的新的文件夾結構:

enter image description here

然後我給自己定的資源處理程序映射:

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

這是鏈接標籤在HTML模板(即無論對於網頁的動態和靜態載荷工作)使用:

<link th:href="@{/assets/css/style.css}" href="../../assets/css/style.css" rel="stylesheet" type="text/css" /> 
0

刪除資源處理程序映射,

然後換

<link th:href="@{/assets/css/style.css}" href="../static/assets/css/style.css" type="text/css" /> 
+0

我已經嘗試過,沒有資源處理程序映射,結果是一樣的。此外,您的標記與我的完全相同,除了添加_href_屬性之外,在視圖呈現過程中它將被thymeleaf引擎忽略(它只能在您靜態打開.html模板時纔會影響)。 – Dolfiz