首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Struts2提供静态文件(JavaScript)服务

使用Struts2提供静态文件(JavaScript)服务
EN

Stack Overflow用户
提问于 2010-10-29 02:50:23
回答 2查看 3.2K关注 0票数 12

我想把一些JavaScript文件放在我的一个包中,让Struts像/struts/js/foo.js一样为它们提供服务

Struts对'template‘包(这是jQuery插件文件所在的位置,由struts.ui.templateDir选项保护)中的文件执行此操作。但是,我想把这些文件放到另一个包中;如果我重新定义struts.ui.templateDir,那么struts就会停止工作,因为它找不到自己的模板。

所以问题是:如何告诉Struts将org.foo.some.package.js中的文件作为/struts/js/whatever.js提供

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-05 18:27:32

Struts2可以提供开箱即用的静态内容。默认情况下,静态内容由StaticContentLoader的一个实现DefaultStaticContentLoader提供。它会自动搜索以下包:

  • org.apache.struts2.static
  • template
  • static
  • org.apache.struts2.interceptor.debugging

您可以在名为packages的filter init参数中添加其他需要搜索的包。

代码语言:javascript
复制
<filter>
    <filter-name>struts2</filter-name>
    <filter-class>
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
    <init-param>
        <param-name>packages</param-name>
        <param-value>some.package another.one</param-value>
    </init-param>
</filter>

您可以添加多个包,使用逗号、空格、制表符或换行符作为分隔符。

顺便说一句,你可以用这个常量来控制浏览器是否缓存静态内容:

代码语言:javascript
复制
struts.serve.static.browserCache
票数 8
EN

Stack Overflow用户

发布于 2013-12-04 22:24:36

一种方法是扩展整个模板&按照您的建议更改templateDir。除非需要实现自定义模板,否则这是非常过分的。

但是最好的方法是忘记/struts/js/foo.js &使用任何其他的URL来加载js。

几个样本:

JSP

代码语言:javascript
复制
WebPages
    |-->myjs.js         (a normal js file)
    |-->mydynamicjs.jsp (a .jsp file containing ONLY javascript code)
    |-->WEB-INF-->xyz.js (another .js file but accessed only through action)

Struts

代码语言:javascript
复制
<action name="myacctionjs">
    <result>/WEB-INF/xyz.js</result>
</action>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4046204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档