??? 想要在Myfaces項目中使用Sitemesh, 結果發現Jsf的標準UI沒有問題,可使用了tomahawk的組件卻顯示不出來。是什么原因呢???
??? 原來是因為tomahawk使用了Filter(ExtensionsFilter)來實現,Sitemesh也使用Filter來實現(太優美了),這就存在一個誰先誰后的問題了。解決方法:
首先,把sitemesh的filter map放到最后。然后把tomahawkr的ExtensionsFilter改為如下:
????<filter-mapping>
??????? <filter-name>MyFacesExtensionsFilter</filter-name>
??????? <url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
??? </filter-mapping>
??? <filter-mapping>
??????? <filter-name>MyFacesExtensionsFilter</filter-name>
??????? <url-pattern>*.faces</url-pattern>
??? </filter-mapping>
注意:/faces/myFacesExtensionResource/*在上面,對應的也要修改myfaces的servlet-mapping,如下:
????<servlet-mapping>
??????? <servlet-name>Faces Servlet</servlet-name>
??????? <url-pattern>*.faces</url-pattern>
??? </servlet-mapping>
???
??? <servlet-mapping>
??????? <servlet-name>Faces Servlet</servlet-name>
??????? <url-pattern>*.jsf</url-pattern>
??? </servlet-mapping>
*.jsf這一項是要加的(我實際上只使用*.faces),不然過不去的。
???