Posted on 2012-02-26 16:47
LaozhonG 阅读(3388)
评论(0) 编辑 收藏 所属分类:
技术
在Struts2中沿用Struts1.2的<jsp:forward page="xxx.action"></jsp:forward>失效,报404错误。因为Struts2采用过滤器的方式处理请求,REQUEST,当到达页面时,FORWARD跳到Action。但是这个客户端的FORWARD并没有被拦截下来,所以找不到了。从而报出404错。记得当时试过很多方法,都不行。连一些基本的include都无法使用,所以研究了一下,结合网友提供的。
解决办法
1、配置web.xml 解决,增加对FORWARD请求的过滤,自然问题就解决了
1 <filter-mapping>
2 <filter-name>struts2</filter-name>
3 <url-pattern >/*</url-pattern>
4 <dispatcher>INCLUDE</dispatcher> //增加对<jsp:include page="xxx.action"/>及其<s:include value="xxx.action"/>支持
5 <dispatcher>REQUEST</dispatcher>
6 <dispatcher>FORWARD</dispatcher>
7 </filter-mapping>
2、用javascript解决,让请求执行到页面时,接着执行如下的代码,发现页面需要重载,然后就重新发送请求REQUEST,这样当然就会被过滤器所截获到了。
<script language="javascript">location.replace(URL)</script>
3、利用html meta,等于也是让页面等待零秒刷新页面,重新发送请求,达到目的。
<meta http-equiv="refresh" content="0;URL=xxx.action">;
上文转载自
解决Struts2中forward问题!------------------------------------------------------
About Me's
------一个喜欢在一块青石阶上独立行走的人