你如何在Struts 2中获得项目路径?

时间:2012-06-28 07:27:23

标签: java file-upload path struts2

例如:

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

将保存到:

  

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

所以,相反,我该怎么做呢:

  

C:\ MY_PROJECT \建立\网络\ TEMP \

不使用绝对文件路径,因为每次项目移动时我都不想重新配置它。我基本上只想要相对路径。

编辑1:

我认为这不重要,但我使用的是Struts 2版本2.1.8.1

编辑2:

我正在使用Apache Tomcat。这就是我正在部署项目的地方。有没有办法在struts.xml中引用Tomcat的项目部署位置?

类似的东西:

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

2 个答案:

答案 0 :(得分:0)

该项目是开发人员工作站上应用程序的所在的位置。

在运行时,您所拥有的只是运行已部署战争的服务器。应用程序的源代码以及它们在工作站上的目录与应用程序服务器无关。它不关心,也不必知道。应用程序服务器上可能有这样的目录,但它不确定,它是一个目录,就像机器上的所有其他目录一样。除了在某个配置文件中指定它之外别无他法。

答案 1 :(得分:0)

有几种方法可以做到这一点。这是最简单的方法:

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

您必须设置 CATALINA_HOME

<强>更新

也许这样,在你的web.xml中:

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

<强>更新

我还找到了一个链接,它适用于Log4j,但它是一样的。 Link-To-Solution