Struts2中的url-pattern带来的一个引入js,css的问题

册页面中用到了<s:head theme="ajax" />来引入dojo,做了一个简单的检测用户名是否存在的ajax效果。昨天还好好的,今天页面装载后就报"dojo未定义"的js错误。打开浏览器的查看源代码,tag起效了,在浏览器地址栏中敲struts/dojo/dojo.js,确实找不到文件。奇了怪了,是不是谁把struts包里的dojo文件给删除了?一顿好找,没问题。干脆新建一个jsp,只放<s:head theme="ajax" />,直接对其访问,坏了,jsp页面甩出一大堆错误,在org.apache.struts2.views.jsp.TagUtils.getStack(TagUtils.java:58)中抛出了NullPointerException。翻出源代码,一顿找,问题出现在


Java代码

Dispatcher du = Dispatcher.getInstance();

Map extraContext = du.createContextMap(new RequestMap(req),
req.getParameterMap(),
new SessionMap(req),
new ApplicationMap(pageContext.getServletContext()),
req,
res,
pageContext.getServletContext());


调试显示du为null。该request的Dispatcher没初始化?赶紧到web.xml看看,原来

Java代码

<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>


被同事改为

Java代码

<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>



这样.jsp文件没走FilterDispatcher,Dispatcher du = Dispatcher.getInstance()当然为null了。原来struts的tag用法比较严格:所在jsp必须经过FilterDispatcher。突然灵光一现,由此及彼,jsp不好用了,js,css不也一样的道理吗?遂赶紧加上:


Java代码

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/struts/*</url-pattern>
</filter-mapping>


测试通过。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值