2011-05-02 7 views
12

अधिकांश ट्यूटोरियल निम्न वेब.एक्सएमएल के समान एक डिफ़ॉल्ट जेएसएफ कॉन्फ़िगरेशन का प्रस्ताव देते हैं:फ़ाइल एक्सटेंशन के बिना मैं जेएसएफ यूआरएल मैपिंग कैसे कॉन्फ़िगर कर सकता हूं?

<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> 

इस कॉन्फ़िगरेशन के साथ मेरे वेबैप में संबंधित * .xhtml फ़ाइलें केवल Faces Servlet द्वारा पाई जाती हैं यदि संबंधित URL फ़ाइल के साथ समाप्त होते हैं एक्सटेंशन .jsf (उदाहरण के लिए http://localhost/welcome.jsf)। क्या web.xml को कॉन्फ़िगर करना संभव है ताकि URL को .jsf के साथ समाप्त न किया जाए, उसी * .xhtml फ़ाइलों का उपयोग करके जेएसएफ पृष्ठों के रूप में भी संसाधित किया जा सके?

दूसरे शब्दों में मैं ऐसे यूआरएल रखना चाहता हूं जो सर्वर साइड कार्यान्वयन पर निर्भर न हों।

उत्तर

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

आप इस की तरह बनाने के यूआरएल मैपिंग बनाते हैं WEB-INF फ़ोल्डर में चेहरे-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 अधिकार के लिए काम करता है? यह अन्य servlets के लिए काम नहीं करेगा। – gagarwal

संबंधित मुद्दे

 संबंधित मुद्दे