आप इस फार्म की तरह कुछ में ExternalContext
का उपयोग करके कंटेनर विशेष निर्भरता से बचने कर सकते हैं:
public String getApplicationUri() {
try {
FacesContext ctxt = FacesContext.getCurrentInstance();
ExternalContext ext = ctxt.getExternalContext();
URI uri = new URI(ext.getRequestScheme(),
null, ext.getRequestServerName(), ext.getRequestServerPort(),
ext.getRequestContextPath(), null, null);
return uri.toASCIIString();
} catch (URISyntaxException e) {
throw new FacesException(e);
}
}
हालांकि, ध्यान दें कि इस कोड पूरी तरह से कंटेनर-नास्तिक नहीं हो सकता है - उन तरीकों में से कुछ एक UnsupportedOperationException
में फेंक उनके डिफ़ॉल्ट कार्यान्वयन। यह कोड जेएसएफ 2.0 विधियों पर निर्भर करता है।
आप चाहिए भी ध्यान रखें कि एक आधार के रूप में इस तरह एक URI का उपयोग कर सही तरीका सामान्य मामले में अपने आवेदन में एक संसाधन का उल्लेख करना नहीं है; ViewHandler
और ExternalContext
उदाहरण के लिए जेएसएफ लाइफसाइकिल का आह्वान करने के लिए संसाधनों या एक्शन यूआरएल लाने के लिए संसाधन संसाधनों का जिक्र करने के लिए संसाधन यूआरएल बनाने के लिए कॉन्सर्ट में इस्तेमाल किया जाना चाहिए।
दुर्भाग्यवश, मुझे नहीं लगता कि जेएसएफ ऐप में जो कुछ भी आप करना चाहते हैं, वह करने के लिए एक सामान्य, कंटेनर-अज्ञेय तरीका है, इसलिए कभी-कभी आप कार्यान्वयन पर निर्भर होते हैं और आपके पास थोड़ा विकल्प नहीं है अन्य एपीआई के लिए नीचे डालो।
जब से मैं कोई रास्ता नहीं इसे अभी परीक्षण करने के लिए एक वास्तविक डोमेन नाम के साथ साथ स्थानीय होस्ट पर हूँ। क्या आप मुझे बता सकते हैं कि इनमें से कौन सी विधि मुझे डोमेन देगी? मैं www.mydomain.com को पुनः प्राप्त करना चाहता हूं – Ced