我正在使用Struts 2.3.15,并且s:optionselecttransfer
标记不起作用,因为JavaScript未加载。我使用:Struts2在configuration.reload()后没有提供静态资源
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:optiontransferselect ... />
产生以下JavaScript:因为我称之为加载存储在各种插件一些附加Struts2的XML配置文件后,在Struts configurationManager.reload()
方法
<script type="text/javascript" src="/struts/optiontransferselect.js"></script>
我的问题是引起的。调用reload()
杀死Struts的静态资源。我重装按如下规则进行:
ConfigurationManager configurationManager = dispatcher.getConfigurationManager();
StrutsXmlConfigurationProvider strutsXmlConfigurationProvider =
new StrutsXmlConfigurationProvider(strutsXMLLocation, false, getServletContext());
configurationManager.addContainerProvider(strutsXmlConfigurationProvider);
configurationManager.reload();
为了解决这个问题,我已经从org.apache.struts2.static
将文件复制到我的服务器的根,使他们都可以访问,然后用来罗马C'S代码,以防止Struts的服务静态资源。这允许浏览器找到s:optionselecttransfer
标签的JavaScript。
如果有人可以冒险猜测为什么reload()
阻止提供静态资源,我想尝试修复它。如果没有其他想法,我会接受Roman C的解决方案。
出于好奇,你做了哪些修改? –
所做的更改将在struts类的其他类加载器中查找。这是需要的,因为web应用程序使用支持Struts2的插件,Struts2不考虑'Thread.currentThread()之外的类加载器。getContextClassLoader()' – Doahh
啊,有趣的是,这可能是值得引入核心框架的东西。 –