JSF पृष्ठों के URL प्रतिमान web.xml
में FacesServlet
की <servlet-mapping>
द्वारा निर्दिष्ट किया जाता। आप उल्लेख किया है कि .xhtml
ठीक काम करता है, तो आप जाहिरा तौर पर यह कॉन्फ़िगर किया गया इस प्रकार है:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
आप <url-pattern>
बदलने के लिए तदनुसार वांछित वर्चुअल URL विस्तार पाने के लिए की जरूरत है।
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
वास्तव में कंक्रीट कार्यात्मक आवश्यकता को प्राप्त करने के लिए आपको बस इतना बदलना होगा।
हालांकि, इससे सुरक्षा समस्या खुलती है। URL में एक्सटेंशन को .jsf
से .xhtml
पर बदलते समय एंडयूसर अब कच्चे फेसलेट फ़ाइल स्रोत कोड देख सकता है। आप web.xml
के लिए निम्न सुरक्षा बाधा जोड़कर इस रोका जा सकता है:
<security-constraint>
<display-name>Restrict access to Facelets source code.</display-name>
<web-resource-collection>
<web-resource-name>Facelets</web-resource-name>
<url-pattern>*.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
आजकल यह प्रतिष्ठा उद्देश्य है '.do' साथ इसे समाप्त करने के। –
@RomanC 2001 में लोकप्रिय चीज़ नहीं थी? (स्ट्रूट्स 1) आजकल एक्सटेंशन का उपयोग नहीं करना कूलर हो सकता है;) जेएसएफ के लिए आप इसके लिए ओमनीफेस या प्रीटीफेस का उपयोग कर सकते हैं। –
यह इतना लोकप्रिय है क्योंकि वे इसे प्रत्येक आईएसबीएन में जोड़ते हैं, उदाहरण के लिए http://shop.oreilly.com/product/9780596005726.do –