天天看點

Spring Boot采坑記錄thymeleaf問題

springboot問題

  1. 前端thymeleaf,使用jar包模式運作後找不到頁面 

    解決方法: 代碼中所有直接傳回String進行頁面跳轉的改為使用ModelAndView

  2. 內建shiro之後自定義Realm中注入的service事務,緩存失效 

    解決方法:在注入的service上增加@Lazy注解,

    原理請參考此部落格
  3. spring事件機制使用service繼承ApplicationListener的方式處理事務導緻項目啟動報錯 

    The bean 'xxx' could not be injected as a 'xxxx' because it is a JDK dynamic proxy that implements: org.springframework.context.ApplicationListener 

    有的人說需要在配置檔案中增加spring.aop.proxy-target-class=true此配置,但是經嘗試無法解決. 

    解決方法:使用注解的方式來監聽事件,例如: 

    @EventListener 

    public void listenInformEvent(InformEvent informEvent) {}

  4. springboot啟動tomcat臨時目錄随機,導緻上傳檔案的功能不能正常使用 

    解決方法:增加配置手動指定docBase,

    出處
    Spring Boot采坑記錄thymeleaf問題

5. springboot上傳本地圖檔不能及時展示(不用上面的方式存儲檔案),重新整理頁面後正常展示

解決方法:

1.存儲檔案時使用不加"/"的檔案名例如"upload/test.jpg"

2.在WebMvcConfigurer中配置目錄對應關系registry.addResourceHandler("/upload/**").addResourceLocations("file:upload/")

問題原因: 靜态檔案是在項目啟動時加載的,不重新請求不會加載,參考:

stackoverflow中VK321這位大哥的回複

thymeleaf問題

1.内聯文法導緻的頁面報錯,内聯文法格式: [[...]]或[(...)] 

解決方法:如頁面js有多元數組會導緻thymeleaf解析錯誤 

解決方案:<script type="text/javascript" th:inline="none">新增紅色字型内容,來禁用内聯表達式 

2.js裡中文變unicode編碼 

問題描述:從背景傳入的中文在js中通過[[...]]來取值會顯示unicode編碼 

解決方法::使用[(...)]來取值,但是需要手動增加引号 

說明:[[...]]等價于th:text(即結果将被HTML轉義),[(...)]等價于th:utext,不會執⾏任何HTML轉義。