好吧,继续写下去。
九、sitemesh不起作用了。解决方法:再看一下web.xml中sitemesh和struts两个filter的位置,sitemesh在前。
原来都是正确的,还记得之前我提的第四个问题吗?就是出现了>>> FilterDispatcher <<< is deprecated! Please use the new filters! 警告,我当时说我完全参考了一篇文章,上面说是把
<filter>
<filter-name>struts2CleanupFilter</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2CleanupFilter</filter-name>
<url-pattern>*.action</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
改成
<filter>
<filter-name>struts-prepare</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-prepare</filter-name>
<url-pattern>*.action</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<filter>
<filter-name>struts-execute</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-execute</filter-name>
<url-pattern>*.action</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
这样改确实对了,但改完之后,发现这段代码路到sitemesh的配置上面去了,再一看,这两段代码不就是
<span style="white-space:pre"> </span><filter>
<filter-name>struts2Filter</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2Filter</filter-name>
<url-pattern>*.action</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
的分体吗?现在等把struts的拦截放到sitemesh前了,所以sitemesh不工作了。简单,把上面的注释掉就行了。也就是说,第四个问题解决方法可以注释掉struts2CleanupFilter。
十、无法动态访问action的方法。解决方法:sturts.xml中设置<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
这个要真的感谢这位作者的这篇文章,写得太详细了,跟踪方法都写到了,值得我学习,一定要好好学习。
http://blog.youkuaiyun.com/achilles12345/article/details/37697457
说一句无关的话,感觉eclipse4.5好像有点抽风。