2013-08-29 17 views
10

我有Login.xhtmlHome.xhtml。我在web.xml配置URL模式如下自定義FacesServlet的<url-pattern>擺脫.xhtml擴展

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>/faces/*</url-pattern> 
</servlet-mapping> 

<welcome-file-list> 
    <welcome-file>Login.xhtml</welcome-file> 
</welcome-file-list> 

當我運行整個項目,在登錄頁面URL是這樣http://localhost:8080/fran/Login.xhtml,這裏fran是我的項目名稱..

不過,我想它http://localhost:8080/fran/Login/而不是http://localhost:8080/fran/Login.xhtml

我怎樣才能做到這一點?是否可以爲每個頁面定製<url-pattern>以擺脫.xhtml擴展?


解決

由於BalusC在評論下面提到... OmniFaces FacesViews是真棒。以下是我所做的步驟:

  • omnifaces-1.5.jar放置在/WEB-INF/lib文件夾中。
  • 添加以下代碼web.xml

    <context-param> 
        <param-name>org.omnifaces.FACES_VIEWS_SCAN_PATHS</param-name> 
        <param-value>/*.xhtml</param-value> 
    </context-param> 
    

這就是它的配置。它工作得很好。

+3

看看http://ocpsoft.org/prettyfaces/,看看* 2。在主頁面 – Daniel

+0

@Daniel ..中創建pretty-config.xml *示例http://ocpsoft.org/prettyfaces是一個不錯的選擇。在'pretty faces'中,需要在' web.xml' – kark

+0

[OmniFaces FacesViews](http://showcase.omnifaces.org/facesviews/ExtensionlessURLs)提供了一種零配置的方式來擺脫'.xhtml'擴展名。它已被用於https://showcase.omnifaces.org和https://zeef.com。 – BalusC

回答

12

看看如果你的唯一原因是擺脫.xhtml擴展名,然後看看OmniFaces FacesViews。它提供了一種零配置的方式來實現,將視圖文件放在/WEB-INF/faces-views/文件夾中。否則,如果您打算在不改變項目結構,要保持你的視圖文件在老地方,仍然有利於擴展名的URL,那麼它的添加以下環境參數的問題:

<context-param> 
    <param-name>org.omnifaces.FACES_VIEWS_SCAN_PATHS</param-name> 
    <param-value>/*.xhtml</param-value> 
</context-param> 

如果您不想使用OmniFaces,而是想自己創建,只需查看OmniFaces的源代碼即可。它是Apache 2.0許可下的開源代碼。

+0

謝謝,'Omni-faces'非常易於使用.. – kark

3

看看prettyfaces: Pretty URLs for JavaServer Faces

看那2.在主頁

創建漂亮-config.xml的例子並在Chapter 2. Get Started

+0

你..沒錯。我的問題,是否需要在web.xml中配置漂亮過濾器。在步驟2(如你所提到的)只適用於'pretty-config.xml'配置,這部分只是單獨..? – kark

+0

自己沒有用過... – Daniel

+0

我用過omnifaces ..哪有那麼容易漂亮的臉... – kark