2011-05-02 58 views
12

大多数教程提出类似下面的web.xml中默认的JSF配置:如何在不使用文件扩展名的情况下配置JSF url映射?

<context-param> 
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name> 
    <param-value>.xhtml</param-value> 
</context-param> 


<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>/faces/*</url-pattern> 
    <url-pattern>*.jsf</url-pattern> 
</servlet-mapping> 

有了这个配置我的web应用程序对应的* .xhtml文件只能由Servlet的面孔,如果发现相应的URL与结束文件扩展名.jsf(例如http://localhost/welcome.jsf)。是否可以配置web.xml,以便不以.jsf结尾的URL也作为使用相同* .xhtml文件的JSF页面进行处理?

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

回答

19

您可以使用过滤器来隐藏这个扩展名,并使您的网址搜索引擎友好,过滤器的这种实现之一是Pretty Filter

例如: 如果您需要http://host:port/yourapp/login与解决您的login.xhtml然后在下面的方式非常过滤器配置

<url-mapping id="login"> 
    <pattern> /login </pattern> 
    <view-id> /legacy/user/login.jsf </view-id> 
</url-mapping> 

看一看two min video教程

2

您可以创建URL映射这样 创建WEB-INF文件夹中的faces-config.xml文件

<?xml version="1.0" encoding="ISO-8859-1"?> 
 

 
<faces-config xmlns="http://java.sun.com/xml/ns/javaee" 
 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 
    http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" 
 
       version="1.2"> 
 

 
    <navigation-rule> 
 
     <from-view-id>/jsf/demoapp</from-view-id> 
 
     <navigation-case> 
 
      <from-outcome>demoapp</from-outcome> 
 
      <to-view-id>/demoapp.xhtml</to-view-id> 
 
     </navigation-case> 
 
    </navigation-rule> 
 

 

 
</faces-config>

在web.xml

你必须做2项

<servlet> 
 
     <servlet-name>jsfServlets</servlet-name> 
 
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
 
     <load-on-startup>1</load-on-startup> 
 
    </servlet>

<servlet-mapping> 
 
     <servlet-name>jsfServlets</servlet-name> 
 
     <url-pattern>/jsf/*</url-pattern> 
 
    </servlet-mapping>

+0

好知道,但只适用于JSF吧?它不适用于其他servlet。 – gagarwal 2017-10-30 03:23:37

相关问题