我有一个使用Struts2制作的Web应用程序。 我正在使用struts2-Jquery插件。
在jsp head部分中使用此设置:
<%@ taglib prefix="sj" uri="/struts-jquery-tags" %>
<head>
<sj:head/>
</head>
一切都很好,生成的HTML代码如下所示:
<script src="/MyContextRoot/struts/js/base/jquery-1.10.0.min.js" type="text/javascript">
关于API: https://code.google.com/p/struts2-jquery/wiki/HeadTag 如果我改变sj:head to it:
<sj:head scriptPath="/MyContextRoot/MySubDir/struts/"/>
然后生成的代码将如下所示(正如预期的那样):
<script src="/MyContextRoot/MySubDir/struts/js/base/jquery-1.10.0.min.js" type="text/javascript">
但是这个请求从服务器给我一个404错误。
我可以创建目录,并输入所需的js文件,但我想,这些请求将由Struts提供。因为它在第一种情况下起作用。
我的Struts2过滤器映射到:/ *
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
有什么想法吗?
谢谢, zsom
答案 0 :(得分:0)
我找到了解决方案。
我扩展了org.apache.struts2.dispatcher.DefaultStaticContentLoader类,并在struts.xml中放入一个常量后,使用我的类进行静态内容加载。
首先创建你的Loader。您必须覆盖两个方法:canHandle和findStaticResource。
public class MyStaticLoader extends DefaultStaticContentLoader{
...
public boolean canHandle(String resourcePath) {
return superCanHandle || resourcePath.contains("MySubDir/struts");
}
public void findStaticResource(String path, HttpServletRequest request, HttpServletResponse response) throws IOException {
if(path != null && path.startsWith("/MySubDir/struts")){
path = path.substring(9);
}
super.findStaticResource(path, request, response);
}
}
在struts.xml中,只需将此类添加为staticContentLoader。
<constant name="struts.staticContentLoader" value="hu.nebih.hfnyportal.util.HFNyPublicStaticLoader"/>
就是这样。
对我而言,这已经足够了。