struts 2 如何将 struts.jar 中的 javascript 文件包含在 jsp 中?

发布于 2024-07-20 15:30:33 字数 276 浏览 5 评论 0原文

我注意到 struts 2 框架的 javascript 客户端验证功能使用 struts2 JAR 文件内的 javascript 文件。 显然,只需使用框架中的标签,JavaScript 文件就会以某种方式包含在 JSP 页面中。

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

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

I've noticed that the javascript client-side validation feature of the struts 2 framework uses a javascript file that comes inside the struts2 JAR file. The javascript file gets included somehow in the JSP page apparently by just using a tag from the framework.

If I manage to do this it will be extremely helpful for the many javascript library files that I'm always copying inside every new web project, because I'll put them all inside a JAR file and then every project won't have a different copy of the files (wich, as you may know, causes a lot of trouble).

Anybody knows how they did it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

飘逸的'云 2024-07-27 15:30:34

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

如果该属性设置为 true,JSP 页面中以路径 /struts/开头的任何静态内容(javascript、css、图像等) /static/ 将由 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>

我花了很长时间才找到这个,关于这个功能的信息并不多。 如果您想阅读相关文档,请参阅 Struts2 API 中的 FilterDispacher 类 这里 就在“提供静态内容”的地方。

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

All right, I pulled some time from work and investigate how the framework does this. It turns out that Struts 2 has a implementation to serve static content. This is configured in the configuration file struts.properties by the property: struts.serve.static.

If that property is set to true any static content (javascript, css, images, etc) in your JSP page that starts with the path /struts/ or with /static/ will be served by the struts FilterDispatcher and other class called the DefaultStaticContentLoader.

For example:

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

Both of this javascript files will be served by the Filter and the ContentLoader.

By default the ContentLoader class will lookup the requested file only in two folders inside the Struts 2 core JAR: org.apache.struts2.static and template.

Now there's a way for you to make the ContentLoader to lookup in other places and it's configured in the web.xml file in the filter params like this:

<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>

It took me a long time to find this, there is not much information about this feature. If you would like to read the documentation for this it's in the Struts2 API in the FilterDispacher class here right where it says "Serving static content".

Hope you'll find it useful, to me it's a great feature and it's very well implemented.

漫雪独思 2024-07-27 15:30:34

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

稍后您可以使用标准 java api 以流的形式访问这些“资源”。

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

You can put whatever you want into a .jar file, it's a zip archive.
jar(1) can put any files into jar. Ant's jar task also takes a fileset.

Later you can access those 'resources' as streams by using standard java api.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文