3

我注意到struts 2 框架的javascript 客户端验证功能使用struts2 JAR 文件中的javascript 文件。javascript 文件显然只是通过使用框架中的标记以某种方式包含在 JSP 页面中。

如果我设法做到这一点,它将对我总是在每个新 Web 项目中复制的许多 javascript 库文件非常有帮助,因为我会将它们全部放在一个 JAR 文件中,然后每个项目都不会有不同的文件的副本(您可能知道,这会带来很多麻烦)。

有人知道他们是怎么做到的吗?

4

2 回答 2

9

好吧,我从工作中抽出一些时间来研究框架是如何做到这一点的。事实证明,Struts 2 有一个提供静态内容的实现。这是通过属性在配置文件 struts.properties 中配置的:struts.serve.static

如果该属性设置为true ,则JSP 页面中以路径/struts//static/开头的任何静态内容(javascript、css、图像等)都将由 struts FilterDispatcher 和称为 DefaultStaticContentLoader 的其他类提供服务。

例如:

<script language="JavaScript" type="text/javascript" src="struts/someScript.js"></script>
<script language="JavaScript" type="text/javascript" src="static/otherScript.js"></script>

这两个 javascript 文件都将由 Filter 和 ContentLoader 提供。

默认情况下,ContentLoader 类只会在 Struts 2 核心 JAR 中的两个文件夹中查找请求的文件:org.apache.struts2.statictemplate

现在有一种方法可以让 ContentLoader 在其他地方查找,它在过滤器参数的 web.xml 文件中配置,如下所示:

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
    <param-name>packages</param-name>
    <param-value>insert.your.package.with.static.content.here</param-value>
</init-param>
</filter>

我花了很长时间才找到这个,关于这个功能的信息并不多。如果您想阅读这方面的文档,它位于 FilterDispacher 类中的 Struts2 API 中,此处显示“提供静态内容”。

希望你会发现它很有用,对我来说这是一个很棒的功能,而且实现得很好。

于 2009-05-18T15:52:57.403 回答
-1

您可以将任何您想要的内容放入 .jar 文件中,它是一个 zip 存档。jar(1) 可以将任何文件放入 jar 中。Ant 的 jar 任务也需要一个文件集。

稍后,您可以使用标准 java api 将这些“资源”作为流访问。

http://java.sun.com/javase/6/docs/api/java/util/ResourceBundle.html

于 2009-05-15T19:37:26.953 回答