想要在Myfaces项目中使用Sitemesh 结果发现Jsf的标准UI没有问题可使用了tomahawk的组件却显示不出来是什么原因呢?
原来是因为tomahawk使用了Filter(ExtensionsFilter)来实现Sitemesh也使用Filter来实现(太优美了)这就存在一个谁先谁后的问题了解决方法
首先把sitemesh的filter map放到最后然后把tomahawkr的ExtensionsFilter改为如下
<filtermapping>
<filtername>MyFacesExtensionsFilter</filtername>
<urlpattern>/faces/myFacesExtensionResource/*</urlpattern>
</filtermapping>
<filtermapping>
<filtername>MyFacesExtensionsFilter</filtername>
<urlpattern>*faces</urlpattern>
</filtermapping>
注意/faces/myFacesExtensionResource/*在上面对应的也要修改myfaces的servletmapping如下:
<servletmapping>
<servletname>Faces Servlet</servletname>
<urlpattern>*faces</urlpattern>
</servletmapping>
<servletmapping>
<servletname>Faces Servlet</servletname>
<urlpattern>*jsf</urlpattern>
</servletmapping>
*jsf这一项是要加的(我实际上只使用*faces)不然过不去的