我想把一些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提供
发布于 2013-12-05 18:27:32
Struts2可以提供开箱即用的静态内容。默认情况下,静态内容由StaticContentLoader的一个实现DefaultStaticContentLoader提供。它会自动搜索以下包:
您可以在名为packages的filter init参数中添加其他需要搜索的包。
<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>您可以添加多个包,使用逗号、空格、制表符或换行符作为分隔符。
顺便说一句,你可以用这个常量来控制浏览器是否缓存静态内容:
struts.serve.static.browserCache发布于 2013-12-04 22:24:36
一种方法是扩展整个模板&按照您的建议更改templateDir。除非需要实现自定义模板,否则这是非常过分的。
但是最好的方法是忘记/struts/js/foo.js &使用任何其他的URL来加载js。
几个样本:
JSP
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
<action name="myacctionjs">
<result>/WEB-INF/xyz.js</result>
</action>https://stackoverflow.com/questions/4046204
复制相似问题