我已经使用 Struts 一段时间了,但是对于我即将完成的一个项目,我被要求将模板(velocity .vm 文件)、配置(struts.xml、persistence.xml)与主 WAR 文件分开。

我的默认结构如下:

    application
    |-- 元信息文件            -- Some configs are here
    |-- WEB-INF             -- others here
    |   |-- classes
    |   |   |-- META-INF
    |   |   `-- mypackage
    |   |       `-- class-files
    |   `-- lib
    |-- css
    `-- tpl                 -- Template dir to be relocated

而且我显然找不到有关如何设置(可能在 struts.xml 中)我的模板所在位置以及配置文件所在位置的文档。

我想我也必须在应用程序服务器上使用配置(我正在使用 Jetty 5.1.14)。

那么,有关于如何配置它的任何信息吗?

谢谢


嗯,更改模板位置的全部内容是将模板放在设计人员可访问的区域中,因此任何需要的修改,设计人员都可以将它们加载到他/她的计算机上,编辑并再次上传。我认为这是一个常见的场景。所以,我的研究中可能遗漏了一些东西。也许我专注于将其配置在错误的地方......有什么想法吗 ?

有帮助吗?

解决方案

如果我正确理解了您关于 Struts 配置文件的问题,那么它们是在 web.xml 中指定的。找到 Struts servlet 配置参数。param-value 可以是要加载的以逗号分隔的 XML 文件列表。例如:

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
        <param-name>config</param-name>
        <param-value>
            WEB-INF/config/struts-config.xml,
            WEB-INF/config/struts-config-stuff.xml,
            WEB-INF/config/struts-config-good.xml,
            WEB-INF/config/struts-config-bad.xml,
            WEB-INF/config/struts-config-ugly.xml
        </param-value>
    </init-param>
    ...
</servlet>

看到这个 Struts指南 5.3.2 下。是的,这也适用于 2.x。

其他提示

为了 持久性.xml, 具体来说,您可以将持久性单元放在单独的 JAR 中,您可以将其与 Web 应用程序 WAR 分开部署,或者将两者一起部署在 EAR 存档中,具体取决于您的应用程序服务器支持的内容。例如,JBoss 手册将其描述为 使用 EJB3 JAR 部署 EAR.

为了 struts-config.xml 如果您想使用非标准位置,我希望您必须重写加载它的 Struts 代码。

我不知道 Velocity 模板。

一般来说,出于安全原因,Web 应用程序仅从 WAR 中加载资源。您还可以使用其他技术,但您可能会发现尝试起来更容易 网页小程序, ,这似乎是一个旨在让您从单独的 JAR 加载资源的框架。

你需要调查一下 velocity.properties 文件位于您的 WEB_INF 文件夹中。恕我直言,您需要在这里更改您的 模板根 改变财产 file.resource.loader.path.

希望它有帮助,彼得

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top