亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

允許 Apache 的 FreeMarker 模板引擎從外部資源文件夾加載模板

允許 Apache 的 FreeMarker 模板引擎從外部資源文件夾加載模板

皈依舞 2023-03-17 13:42:05
我使用 Spring Initilizr 創建了一個 Spring Boot 應用程序。然后我包含了Apache's Freemarker模板引擎來從我的項目中加載模板。引擎默認從以下位置加載模板:src/main/resources/templates/文件夾。index.ftl當用戶訪問網頁時,我試圖加載一個簡單的文件作為模板http://localhost:8080。但我需要從文件夾加載模板src/main/webapp/。每當我嘗試從文件夾外部加載模板時resources,模板引擎都無法找到模板。我已經閱讀了各種教程和 Stack Overflow 問題。沒有人回答我的問題,我被困住了,404 ERROR因為引擎無法找到文件。文件結構為:|-src|---main|-----java|-------MainApplication.java|-------controllers|---------ViewController.java|-----resources|-------static|-------templates|-------application.properties|-----webapp|-------index.ftl經過大量挖掘,我發現了一篇帖子,他們建議更改模板引擎搜索文件的位置。它建議在 application.properties 中添加以下行:spring.freemarker.enabled=truespring.freemarker.template-loader-path=classpath:src/main/webapp/這似乎根本不起作用。當我訪問http://localhost:8080 的網頁時,我試圖解析簡單的索引頁面。我編寫了以下代碼來映射 HTTP 請求ViewController.java:@RequestMapping("/")public ModelAndView home(Model model){    return new ModelAndView("index");}不知道我是完全弄錯了還是錯過了一些配置。
查看完整描述

2 回答

?
慕后森

TA貢獻1802條經驗 獲得超5個贊

來自 Spring 文檔:

如果您的應用程序打包為 jar,請不要使用 src/main/webapp 目錄。雖然這個目錄是一個通用標準,但它只適用于 war 打包,并且在生成 war 時它會被大多數構建工具默默地忽略。

src/main/webapp與web archive關聯,生成war時會被maven war plugin打包。

假設您需要一個單獨的位置來保存 ftl 模板,并且您仍然希望打包為 jar,您可以按照以下步驟操作。

在構建的 pom 文件中添加資源條目,以便資源插件可以將該目錄復制到類路徑。

<build>
    <resources>
      <resource>
         <directory>src/main/webapp</directory>
     </resource>
    <resources>
<build>

更改加載程序路徑以從類路徑的根目錄讀取。

spring.freemarker.template-loader-path=classpath:

如果它僅適用于 ftl 模板,我會將目錄更改為src/main/ftls以避免混淆并在資源中更新相同的目錄。

更新

其實我想構建一個WAR部署包

你必須使用戰爭插件來建立戰爭。添加插件并在pom.xml中將包裝更改為war。

有關傳統部署的更多信息:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html#howto-create-a-deployable-war-file


查看完整回答
反對 回復 2023-03-17
?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

編輯

在嵌入式 tomcat 中,您可以在應用程序屬性中定義靜態資源路徑

 spring.mvc.static-path-pattern=

如果部署到 tomcat,在 tomcat 中使用可以在 server.xml 內部定義可以保存 freemarker 文件的靜態上下文,如

 <Context docBase="/home/stuff" path="/static" />

<Context>在元素內部添加一個元素<Host>。Context 有兩個屬性:docBase 是磁盤上包含您的靜態文件的目錄,path 是您要在其上提供文件的 URL。


查看完整回答
反對 回復 2023-03-17
  • 2 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號