2011-01-27 16 views
5

मैं जेएसएफ में छवियों को स्थानीयकृत करने की कोशिश कर रहा हूं, और मैं चाहता हूं कि उपयोगकर्ता मेरी साइट पर अपना लोकेल सेट कर सके। यह मैं एक अपवाद के साथछवि i18n JSF2

FacesContext.getCurrentInstance().getViewRoot().setLocale(_locale); 

जो अच्छा काम करता है के लिए एक कॉल से कर रहा हूँ,:

<h:graphicImage library="images" name="pic.gif" /> 

Accept-Language ब्राउज़र की अनुरोध में भेजा गया का उपयोग करता है निर्धारित करने के लिए उपयोग किए जाने वाले स्थान में। मैं

<h:graphicImage library="#{resource.locale}/images" name="pic.gif" /> 

द्वारा प्रत्येक .properties फ़ाइल में एक स्थानीय वाक्य रखने और छवियों को संदर्भित इस पर काम कर सकते हैं, लेकिन फिर वहाँ अलग-अलग चित्र के लिए कोई फॉल-बैक है, इसलिए मैं हर छवि की एक प्रति है करने के लिए है कि क्या यह प्रत्येक लोकेल की निर्देशिका में अलग है या नहीं। यह काफी बोझिल है, यह देखते हुए कि मैं भविष्य में 9 लोकेशंस और शायद अधिक का समर्थन करता हूं। कोई भी सलाह काफी सराही जाएगी।

+0

वर्तमान में मैं ViewHandlerWrapper क्लास का उपयोग करके [सार्वजनिक लोकेल गणना Locale (FacesContext संदर्भ)] विधि को ओवरराइड करने के लिए "सजावट" ViewHandler में देख रहा हूं। यह एक बहुत ही आशाजनक समाधान की तरह दिखता है, जब मैंने इसे किया है तो अपडेट होगा – theFunkyEngineer

+0

ओवरहेडिंग व्यूहैंडलर लोकेल को सही जगह से प्राप्त करने के लिए काम करता है, हालांकि, छवि फ़ॉलबैक अभी भी एक मुद्दा है - गैर-स्थानीय छवियों के लिए एक अलग लाइब्रेरी का उपयोग करेगा। कार्यान्वयन समाप्त होने पर पूर्ण कॉन्फ़िगरेशन पोस्ट करेगा। – theFunkyEngineer

+0

नीचे बलुससी को मेरी टिप्पणी देखें। – rapt

उत्तर

2

दिलचस्प समस्या। हालांकि इसके लिए कोई अंतर्निहित समर्थन नहीं है, जेएसएफ द्वारा नहीं और न ही जावा ईई के अवशेष द्वारा। आपका सबसे अच्छा शर्त एक Servlet जो फ़ॉलबैक स्थान के बारे में जानता बनाने के लिए है और इस प्रकार मूल रूप से निम्न परीक्षण करता है:

if (getServletContext().getResource(request.getPathInfo()) == null) { 
    // Display fallback image instead. 
} 

आप अंततः एक कस्टम JSF घटक है जो एक ही जांच करता है के द्वारा ऐसा कर सकता है।

+0

बलुससी वास्तव में जेएसएफ ग्रैंड मास्टर है, लेकिन वास्तव में जेएसएफ 2 में इसके लिए बहुत अच्छा अंतर्निहित समर्थन है। कृपया 3-भाग श्रृंखला पढ़ें: http://technology-for-human.blogspot.com/2010/10 /jsf-20-new-featuers-part-1-of-3.html http://technology-for-human.blogspot.com/2010/10/jsf-20- new-features-part-2-of- 3. एचटीएमएल http://technology-for-human.blogspot.com/2010/10/jsf-20-new-features-part-3-of-3.html .... विशेष रूप से आलेख संख्या 2. – rapt

+0

@rapt : कृपया प्रश्न दोबारा पढ़ें। ओपी पहले से ही इसके बारे में पता है। यह सिर्फ ओपी की विशेष आवश्यकता के लिए अपर्याप्त रूप से उपयुक्त है। – BalusC

+0

मुझे नहीं लगता कि ओपी इस बारे में जागरूक है। वह छवि पथ को स्ट्रिंग के साथ उपसर्ग करने का प्रयास कर रहा है जो स्थानीय छवि फ़ोल्डर से मेल खाएगा। हालांकि लेख में वे उपसर्ग के बिना ऐसा करते हैं। ढांचा स्वचालित रूप से करता है। यह एक डिफ़ॉल्ट भाषा में स्वचालित गिरावट भी प्रदान करता है। – rapt

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