import java.util.Locale;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.i18n.CookieLocaleResolver;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping;
@Configuration
public class Config {
@Bean
public LocaleResolver localeResolver() {
final CookieLocaleResolver ret = new CookieLocaleResolver();
ret.setDefaultLocale(new Locale("en_US"));
return ret;
}
@Bean
public MessageSource messageSource() {
final ReloadableResourceBundleMessageSource ret = new ReloadableResourceBundleMessageSource();
ret.setBasename("classpath:lang");
ret.setDefaultEncoding("UTF-8");
return ret;
}
@Bean
public HandlerMapping handlerMapping() {
final LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
interceptor.setParamName("language");
final DefaultAnnotationHandlerMapping ret = new DefaultAnnotationHandlerMapping();
ret.setInterceptors(new Object[] { interceptor });
return ret;
}
}
उपरोक्त मेरी एनोटेशन कॉन्फ़िगरेशन है। मैंने मूल रूप से this ट्यूटोरियल के एक्सएमएल का अनुवाद किया है।स्प्रिंग एमवीसी लोकेल चेंजइंटरसेप्टर एनोटेशन आधारित काम नहीं करता
आश्चर्यजनक रूप से यह काम नहीं करता है जब मैं ...?language=fr
पर जाता हूं।
हालांकि, निम्नलिखित काम (app-servlet.xml
में) (नोटिस यहाँ यह locale
उपयोग कर रहा है) करता है:
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="locale" />
</bean>
</mvc:interceptors>
नोट करने के लिए एक अन्य महत्वपूर्ण बात यह है कि जब मैं ऊपर तरीकों पर breakpoints, के तीन के सभी डाल उन्हें, हर ब्रेकपॉइंट ब्रेक करता है, जिसका अर्थ है कि "कोई" मान पढ़ रहा है।
तो, मेरा एनोटेशन आधारित इंटरसेप्टर क्यों काम नहीं करेगा?
धन्यवाद - बीन का नाम चाल है! – Henrik
हाँ, आप सही हैं। बीन का नाम समाधान @ बीन (नाम = "लोकेल रिसेल्वर") है –