2011-09-10 9 views
9

मुझे अपने जेएसपी पृष्ठों में एक आगंतुक का लोकेल प्राप्त करने की आवश्यकता है ताकि मैं भाषाओं की सूची के साथ एक ड्रॉप डाउन मेनू को सही तरीके से प्रदर्शित कर सकूं और चयनित भाषा उनके वर्तमान लोकेल के अनुसार कर सकूं । आम तौर पर मैं ${pageContext.request.locale} जैसे कुछ कर सकता हूं।स्प्रिंग 3 के सत्र का उपयोग कर जेएसपी में विज़िटर का लोकेल कैसे प्राप्त करें

समस्या, मुझे लगता है कि, यह केवल मुझे उपयोगकर्ता के अनुरोध शीर्षकों (ब्राउज़र क्या भेजता है) के अनुसार लोकेल देगा। लेकिन उपयोगकर्ता उनकी भाषा/स्थानीय परिवर्तित हो सकती है, इसलिए मैं वसंत की व्यवस्था है जिसके भी सत्र पर लग रहा है उपयोग करने की आवश्यकता:

RequestContextUtils.getLocale(request).toString(); 

लेकिन तब इसे उपयोग करने में है कि एक JSP पेज में इतना आसान नहीं है और JSP कोड काम है इसके साथ।

या उपयोगकर्ता के लिए भाषाओं के ड्रॉप डाउन मेनू को प्रदर्शित करने के लिए एक और आसान तंत्र है? क्या वसंत जेएसपी से आसानी से सुलभ वस्तु में मौजूदा लोकेल स्टोर करता है?

उत्तर

2

जैसा कि आप सत्र लॉकेलरोलॉल्वर का उपयोग करते हैं, वर्तमान लोकेल सत्र में संग्रहीत एक विशेषता नाम का उपयोग सत्र सत्र में संग्रहीत किया जाता है। सत्र LocaleResolver का संदर्भ किसी अन्य विशेषता नाम (org.springframework.web.servlet.DispatcherServlet # LOCALE_RESOLVER_BEAN_NAME) का उपयोग कर अनुरोध में संग्रहीत किया जाता है।

मुझे जावा कोड का उपयोग किए बिना सीधे जेएसपी पृष्ठ के भीतर लोकेल प्राप्त करने का एक आसान तरीका नहीं दिख रहा है।

मैं वर्तमान लोकेल लाऊंगा और नियंत्रक में चुनिंदा भाषाओं की सूची बनाउंगा और इसे मॉडल में जोड़ूंगा।

यह कोड को टेस्ट करने योग्य बनाता है और जावा कोड को jsp से नियंत्रक में ले जाता है।

1

एक पंक्ति समाधान ..

RequestContextUtils.getLocale(request) 
21

हमें

${pageContext.response.locale} 

के लिए चाल किया था। यह संपत्ति स्प्रिंग के लोकेल रिज़ॉल्वर द्वारा स्थापित की गई है।

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