2017-03-09 60 views
0

我試圖將我的應用程序移植到Spring引導,並且對我來說事情正常。我面臨着靜態內容和contextPath的問題。我在application.properties上下文路徑和靜態內容| Spring Boot

server.contextPath=/sm-admin 
此之前

添加下列財產,我指的是我的靜態內容由

<script src="/plugins/jQuery/jquery-2.2.3.min.js"></script> 
<script src="/bootstrap/js/bootstrap.min.js"></script> 

但添加contextPath,上面的配置不再工作,我有以下方法

更改靜態內容引用到

<script src="../plugins/jQuery/jquery-2.2.3.min.js"></script> 
<script src="../bootstrap/js/bootstrap.min.js"></script> 

或者

我認爲應該有某種方式使用application.properties文件來處理它,但我無法找到這樣的配置。可以點點我正確的方向。

回答

1

有2個因素在這個問題:你的Web應用程序和瀏覽器,所以我不認爲這可以通過彈簧被控制,因爲這與瀏覽器的行爲做。

問題

在你的 '老' 的HTML文件版本的應用程序根上下文是/。這就是爲什麼src='/plugins/jQuery/jquery-2.2.3.min.js'加載沒有任何問題。

現在,因爲你的應用程序根上下文改爲/sm-admin你的web應用程序將只能與路徑前綴請求。這就是爲什麼src='/plugins/jQuery/jquery-2.2.3.min.js'不工作,你的服務器有迴應罰款,如果它是src='/sm-admin/plugins/jQuery/jquery-2.2.3.min.js'

現在src='../plugins/jQuery/jquery-2.2.3.min.js'正在B/C您必須已經從1個文件夾的根目錄上下文中,即服務:/sm-admin/page/mypage.html..您只是間接引用根路徑。

我提出的解決方案:

  1. 前綴從根裝有/sm-admin的所有資源。

或者

  • 更改所有絕對路徑親屬路徑,即:改變src='/plugins/jQuery/jquery-2.2.3.min.js'src='plugins/jQuery/jquery-2.2.3.min.js'並設置在頭的基本URL所有親屬路徑,即:<base href="/sm-admin/"/>。這個解決方案的一個警告是,你的應用程序中的任何地方都使用相對路徑,它們將相對於此基本路徑變得相對。
  • +0

    同意,我可以繼續前進任何一種方法,我一直在尋找,如果春季啓動有辦法處理靜態內容的上下文 –

    +0

    是的,這將是一個很好的功能,但想象春天會如何處理它,要麼必須掃描資源並動態修復它們,要麼必須任意重新路由根請求。 – artemisian

    相關問題