【问题标题】:How do you get the project path in Struts 2?你如何获得 Struts 2 中的项目路径?
【发布时间】:2012-06-29 16:40:15
【问题描述】:

例如:

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

将保存到:

\Apache Tomcat 7.0.14\bin\temp\upload__781d3178_13831f5e207__8000_00000003.tmp

那么,我该如何让它去:

C:\my_project\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" />

【问题讨论】:

    标签: java file-upload path struts2


    【解决方案1】:

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

    <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

    【讨论】:

    • Jaiwo99一如既往的救援!哈哈谢谢大佬。唯一的问题是,当我在本地开发时,项目会部署到c:\project\build,而当我将其部署到服务器上时,它会转到catalina.home\webapps\project\build
    • @ThreaT 呵呵,那就酷! build文件夹只存在于你的开发环境中,以后不会出现在你的应用中。
    【解决方案2】:

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

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

    【讨论】:

    • 不,这是不可能的。但是使用相对路径,就像你已经在做的那样,会导致一个相对于 tomcat 安装目录的文件夹。
    • 怎么不工作?这个目录存在吗?您是否尝试过使用正斜杠而不是反斜杠?为什么要把project/build/web放在tomcat的webapps目录下?它应该包含战争文件或爆炸的战争目录。
    • 你能告诉我它应该是怎样的吗?就像从一个工作示例中删除一个 1 班轮一样?我认为这可能更容易。
    • 您在自己的问题中有一条直线:您使用temp 作为属性的值,文件最终位于\Apache Tomcat 7.0.14\bin\temp`. So the directory is relative to tomcat's bin` 目录中。
    猜你喜欢
    • 2017-09-14
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 2016-08-24
    相关资源
    最近更新 更多