2013-01-21 29 views
9

जेएसएफ में मैं फेस यूआरएल को विभिन्न यूआरएल पैटर्न में मैप कर सकता हूं। जैसे *.xhtml पर।किसी भी एक्सटेंशन के लिए JSF .xhtml फ़ाइलों को मैपिंग

जो भी मैं चाहता हूं वह फेसेस सर्वलेट को पर एक्सटेंशन मानचित्रित करें। मतलब, अगर मेरे पास मेरी वेब रूट में customers.xhtml कोई पृष्ठ है, तो मैं http://example.com/customers का उपयोग करके इसका अनुरोध करना चाहता हूं।

मैंने How do I configure JSF url mappings without file extensions? पर सवाल देखा और यह कुछ डिग्री काम करता है, लेकिन मुझे प्रत्येक फ़ाइल को अलग-अलग मैप करने की आवश्यकता है (अगर मैं गलत हूं तो मुझे सही करें)।

मैं अपने सभी .xhtml फ़ाइलों को एक साथ कैसे फेस सर्वलेट पर अलग-अलग मैप किए बिना मैप कर सकता हूं?

उत्तर

9

मानक माध्यमों का उपयोग करना संभव नहीं है। आपको मूल रूप से servlet filter पर होमब्री करने की आवश्यकता है जिसे /* पर मैप किया गया है और यह जांचता है कि वर्तमान अनुरोध URL एक विस्तारहीन है और यदि ऐसा है, तो RequestDispatcher#forward() फ़ाइल एक्सटेंशन के साथ यूआरएल पर कॉल करें (आप जानते हैं, एक आगे संशोधित नहीं करता है रीडायरेक्ट के रूप में वर्तमान अनुरोध यूआरएल करेगा)। तुम भी

वैकल्पिक रूप से JSF <h:form>, <h:link>, आदि के लिए वांछित extensionless यूआरएल का निर्माण करने के लिए एक कस्टम view handler जरूरत है, तो आप उपयोग कर सकते हैं PrettyFaces या 'FacesViews OmniFaces ताकि आप पहिया बदलने की जरूरत नहीं है। FacesViews शोकेस पेज के निचले हिस्से में आप सीधे स्रोत कोड पर कुछ आसान लिंक पा सकते हैं जो आपको कुछ प्रेरणा दे सकता है।

+0

मैं जो कह रहा हूं उसके लिए मैं वेब खोज रहा हूं। क्या आपको पता है कि क्या यह योजना बनाई गई है कि जेएसएफ की भावी रिलीज इस तरह की सुविधा पर विचार करेगी? –

+1

@ जोओओ: मानक जेएसएफ में फेसव्यू को एकीकृत करने के लिए [ठोस योजनाएं] (https://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-1260) हैं। लेकिन बहुत सारे Servlet 4.0 API और उपलब्ध समय/संसाधनों पर निर्भर करता है। – BalusC