使用urlrewrite的默认类型forward时,跳转action出现404错误(当然to的地址是正确的,可以直接访问),若直接跳jsp页面等没问题,urlrewrite.xml代码如下:
<rule>
<from>/gm/(\d+)</from>
<to>/government/index.shtml?eid=$1</to>
</rule>
解决方式:
1.首先看下他们的顺序:urlrewrite--struts-cleanup--struts (如下code.2)
2.因为struts的filter没有处理来自forward的请求,在web.xml里修改一下map参数(如下code.1.2)
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.shtml</url-pattern>
<dispatcher>REQUEST</dispatcher><!--code.1-->
<dispatcher>FORWARD</dispatcher><!--code.2-->
</filter-mapping>