2012-06-28 64 views
0

例如:你如何在Struts 2中獲得項目路徑?

<constant name="struts.multipart.saveDir" value="temp" /> 

將保存到:

\ Apache Tomcat上 7.0.14 \ BIN \ TEMP \ upload__781d3178_13831f5e207__8000_00000003.tmp

所以,相反,我該怎麼辦讓它去:

C:\ my_proje ct \ build \ web \ temp \

不使用絕對文件路徑,因爲我不想每次項目移動時重新配置它。我只是想要相對路徑。

編輯1:

,我不認爲它很重要,但我使用Struts 2版本2.1.8.1

編輯2:

我使用Apache Tomcat的。這就是我部署項目的地方。有沒有辦法在struts.xml中引用Tomcat的項目部署位置?

喜歡的東西:

<constant name="struts.multipart.saveDir" value="..\webapps\project\build\web" /> 

回答

0

有幾種方法可以做到這一點。這裏是最簡單的方法:

<constant name="struts.multipart.saveDir" value="${catalina.home}/webapps/project/web/temp"/> 

你必須設置你的CATALINA_HOME

UPDATE

也許這樣,在你的web.xml:

<context-param> 
    <param-name>catalina.home</param-name> 
    <param-value>path/to/your/tomcat</param-value> 
</context-param> 

UPDATE

我還發現了一個鏈接,它是針對Log4j的,但它是一樣的。 Link-To-Solution

+0

Jaiwo99一如既往地拯救!哈哈感謝的人。唯一的問題是,當我在本地開發時,項目會被部署到'c:\ project \ build',並且當我將它部署到服務器上時,它會轉到'catalina.home \ webapps \ project \ build' – ThreaT

+0

@ ThreaT hehe,然後很酷! 'build'文件夾只存在於您的開發環境中,它以後不會出現在您的應用程序中。 – Jaiwo99

0

該項目是在源的應用,開發者工作站上,都是。

在運行時,你得到的只是運行已部署戰爭的服務器。應用程序的來源以及它們在工作站上的目錄與應用程序服務器無關。它不在乎,也不必知道。應用程序服務器機器上可能有這樣一個目錄,但它不能確定,並且它是機器上所有其他目錄的目錄。除了在某些配置文件中指定它之外沒有別的辦法。

+0

請查看編輯2 – ThreaT

+0

不,這是不可能的。但是使用相對路徑,就像你已經做的一樣,會導致一個相對於tomcat安裝目錄的文件夾。 –

+0

我剛剛在EDIT 2中放入的示例不起作用。 – ThreaT

相關問題