想要在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),不然過不去的。
|
新聞熱點
疑難解答