它生成以下JavaScript:
我使用的是Struts2.3.15,s:optionselecttransfer
标记没有工作,因为JavaScript没有加载。我用:
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:optiontransferselect ... />
它生成以下JavaScript:
<script type="text/javascript" src="/struts/optiontransferselect.js"></script>
造成我的问题是因为我在加载了一些存储在各种插件中的额外的configurationManager.reload()
Struts2配置文件之后,调用了Struts2方法。调用reload()
会扼杀Struts对静态资源的服务。我的重新装载如下:
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的解决方案。
发布于 2013-08-23 07:44:38
s:head
标签应该放在头标签下面。
默认情况下,FilterDispatcher
使用的常量为其jar内部的静态内容提供服务。
struts.serve.static=true
如果您想从context_path/struts
访问它,那么通过设置为false
来关闭它。
struts.serve.static=false
https://stackoverflow.com/questions/18402155
复制