首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Struts2 sj:head with scriptPath

Struts2 sj:head with scriptPath
EN

Stack Overflow用户
提问于 2015-03-06 01:51:45
回答 1查看 986关注 0票数 0

我有一个用Struts2制作的网络应用程序。我正在使用struts2-Jquery插件。

在jsp head部分中使用此设置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   <%@ taglib prefix="sj" uri="/struts-jquery-tags" %>
   <head>
   <sj:head/>
   </head>

一切正常,生成的HTML代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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到它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<sj:head scriptPath="/MyContextRoot/MySubDir/struts/"/>

然后生成的代码将如下所示(如预期的那样):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="/MyContextRoot/MySubDir/struts/js/base/jquery-1.10.0.min.js" type="text/javascript">

但是这个请求给了我一个来自服务器的404错误。

我可以创建目录,并放入所需的js文件,但我希望这些请求将由Struts提供。在第一种情况下起作用。

我的Struts2过滤器映射到: /*

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<filter-mapping>
 <filter-name>struts2</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>

有什么想法吗?

谢了,兹森

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-06 05:28:50

我找到了解决办法。

我扩展了org.apache.struts2.dispatcher.DefaultStaticContentLoader类,并在struts.xml中添加了一个常量,将类用于静态内容加载。

首先创建你的装载机。您必须重写两个方法: canHandle和findStaticResource。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<constant name="struts.staticContentLoader" value="hu.nebih.hfnyportal.util.HFNyPublicStaticLoader"/>

就这样。

对我来说已经足够了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28896208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文