如何在没有文件扩展名的情况下配置JSF url映射?

大多数教程提出了类似于以下web.xml的默认JSF配置:

 javax.faces.DEFAULT_SUFFIX .xhtml   Faces Servlet javax.faces.webapp.FacesServlet 1   Faces Servlet /faces/* *.jsf  

使用此配置,如果相应的URL以文件扩展名.jsf(例如http://localhost/welcome.jsf )结尾,则只有Faces Servlet才能找到我的webapp中相应的* .xhtml文件。 是否可以配置web.xml,以便使用相同的* .xhtml文件将不以.jsf结尾的URL处理为JSF页面?

换句话说,我想拥有不依赖于服务器端实现的URL。

您可以使用filter隐藏此扩展名并使您的URL SEO友好,其中一个Filter的实现是漂亮的filter 。

例如:如果您需要http://host:port/yourapp/login来解析您的login.xhtml那么在漂亮的filter中配置以下方式

   /login   /legacy/user/login.jsf   

看看两分钟的video教程

你可以在WEB-INF文件夹中创建像这样创建faces-config.xml文件的url映射

    /jsf/demoapp  demoapp /demoapp.xhtml