2017-09-25 35 views
0

更新:形容詢問清楚Thymeleaf:無法加載JS和CSS時直接訪問該頁面

我創建和thymeleaf一個web應用程序了,如果我打開登錄頁面,一切工作正常,然後登錄,然後轉向管理模塊或報告模塊。

當我在瀏覽器中輸入網址locahost:8080/send/kf/index(需要進行身份驗證,但我可以打開所有自定義過濾器中的訪問權限)時,會發生混淆,頁面將不加載js和css。在調試模式下,我看到/send/kf被意外投入到下面的路徑中。如果我訪問localhost:8080/assets/avatars/avatar.png,我可以獲取資源。

enter image description here

以下是文件夾結構,我把我的靜態資源。 /send/kf怎麼可能自動加入到url中,請幫我解決這個問題。謝謝! enter image description here

+0

確實使用'/ assets /'而不是'assets /'來解決你的問題嗎? – eis

+0

不,正確的路徑應該是'/ assets/css/...',但'/ send/kf'會自動放入網址中。 –

+0

你使用彈簧安全嗎?如果是的話,這可以幫助。 [資源1](https://stackoverflow.com/a/24920752/3493036),[資源2](https://stackoverflow.com/a/22829754/3493036) – Patrick

回答

1

您可以在application.properties使用spring.resources.static-位置文件

spring.resources.static-locations=classpath:/resources/css/ 

spring.mvc.static-path-pattern=/resources/** 

這被認爲是形式documentation

注:靜態資源,如JavaScript或CSS,可以很容易地可以從Spring Boot應用程序中獲取,只需將它們放入源代碼中的正確位置即可。默認情況下,Spring Boot以類型路徑中的資源在「/ static」(或「/ public」)中提供靜態內容。

+0

這是要重新定位靜態資源的地址,對不對?我的js和css位於'resouces/static/assets'下面,如果我登錄到網站,它可以被加載,但直接點擊內部網址時無法加載。 –

+0

你的意思是說你通過超鏈接訪問這個頁面? –

+0

不是超鏈接,只需在瀏覽器中輸入url即可。 –

0

我找到了解決此問題的方法。我不知道如何將/send/kf放入靜態資源的url中,但我認爲如果將控制器映射放在根路徑下,應避免此問題。正如我所想,網址是正確的,資源可以成功加載。

@Controller 
public class ManualMessageController { 

    @Autowired 
    private MsgTemplateRepository msgTemplateRepository; 

    @RequestMapping("/manualMsg") 
    public String manualMsg(Model model){ 
     model.addAttribute("msgTemplateList", msgTemplateRepository.findByStatus(1)); 
     return "manualMessage"; 
    } 
}