我一直在研究當前要部署到多種環境的應用程序。但是,我們在部署到特定環境時遇到了上下文路徑問題。這是一個在Tomcat 6上運行的Java/Spring應用程序。部署過程由系統管理員處理,所以我沒有太多的可視性,所以我試圖想出一些處理場景的方法。對於所有URLS,我們在request.getContextPath()
之前加上它們。在正常情況下,這工作正常。例如,如果戰爭的文件名site1.war,它被部署到Java - 管理上下文路徑
/site1/
不過,我們有幾個其他環境的凡戰部署和它所包含的應用程序根目錄外的ROOTPATH所以它結束了
/otherroot/site1/
所以應用程序的根路徑是/site1/
,並不知道有這等ROOTPATH /otherroot/
的。在這種情況下,調用getContextPath()返回/site1/
,實際上我們需要的路徑是/otherroot/site1/
。
現在,讓我困惑的一件事是,在定義圖像(圖像,樣式表或JavaScript文件)時,當我們在JSF頁面中使用#{request.contextpath}時,URL在查看源代碼時是正確的。例如,給定/otherroot/site/
網址,如果我設置
<img src="#{request.contextPath}/image1.png"/>
,當我查看呈現頁面的源代碼時,我看到/otherroot/site1/image1.png
。現在,如果我在每次渲染頁面時設置一些JS變量來保存上下文路徑,我會得到不同的結果。例如,
<script>
APP.ROOT_PATH = '#{request.contextPath}';
</script>
這使得如下:
APP.ROOT_PATH = '/site1'
這會引起一些問題,因爲我們使用的異步請求的,所以我們使用url正確地從客戶端請求數據。
所以我的問題是,編寫一個可以在任何給定路徑下運行的應用程序的最佳策略是什麼?
您可以編寫自定義標籤! –