我正在使用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
啊,有趣的是,這可能是值得引入核心框架的東西。 –