想要在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)不然過不去的
From:http://tw.wingwit.com/Article/program/Java/ky/201311/29283.html