首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Struts2在configuration.reload()之后不提供静态资源

Struts2在configuration.reload()之后不提供静态资源
EN

Stack Overflow用户
提问于 2013-08-23 03:50:16
回答 1查看 538关注 0票数 1

我使用的是Struts2.3.15,s:optionselecttransfer标记没有工作,因为JavaScript没有加载。我用:

代码语言:javascript
运行
AI代码解释
复制
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:optiontransferselect ... />

它生成以下JavaScript:

代码语言:javascript
运行
AI代码解释
复制
<script type="text/javascript" src="/struts/optiontransferselect.js"></script>

造成我的问题是因为我在加载了一些存储在各种插件中的额外的configurationManager.reload() Struts2配置文件之后,调用了Struts2方法。调用reload()会扼杀Struts对静态资源的服务。我的重新装载如下:

代码语言:javascript
运行
AI代码解释
复制
ConfigurationManager configurationManager = dispatcher.getConfigurationManager();
StrutsXmlConfigurationProvider strutsXmlConfigurationProvider = 
        new StrutsXmlConfigurationProvider(strutsXMLLocation, false, getServletContext());
configurationManager.addContainerProvider(strutsXmlConfigurationProvider);
configurationManager.reload();

为了解决这个问题,我将文件从org.apache.struts2.static复制到我的服务器根,这样就可以访问它们,然后使用Roman的代码来防止Struts提供静态资源。这允许浏览器找到s:optionselecttransfer标记的JavaScript。

如果有人可以猜测为什么reload()会阻止静态资源的服务,我想尝试修复它。如果没有其他的想法,那么我将接受罗马C的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-23 07:44:38

s:head标签应该放在头标签下面。

默认情况下,FilterDispatcher使用的常量为其jar内部的静态内容提供服务。

代码语言:javascript
运行
AI代码解释
复制
struts.serve.static=true

如果您想从context_path/struts访问它,那么通过设置为false来关闭它。

代码语言:javascript
运行
AI代码解释
复制
struts.serve.static=false
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18402155

复制
相关文章

相似问题

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