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;
}
}
Ở trên là cấu hình chú thích của tôi. Tôi đã dịch một cách cơ bản this XML của hướng dẫn.Chú thích dựa trên Spring MVC LocaleChangeInterceptor không hoạt động
Thật lạ là nó không hoạt động khi tôi đi đến ...?language=fr
.
Tuy nhiên, sau đây làm việc (trong app-servlet.xml
) (thông báo ở đây nó đang sử dụng locale
):
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="locale" />
</bean>
</mvc:interceptors>
Một điều quan trọng cần lưu ý là khi tôi đặt breakpoint trên các phương pháp trên, tất cả các ba chúng, mọi điểm dừng đều phá vỡ, ngụ ý rằng "ai đó" đang đọc các giá trị.
Vì vậy, tại sao trình chặn đánh chặn dựa trên chú thích của tôi không hoạt động?
Cảm ơn - tên của hạt là thủ thuật! – Henrik
Vâng, bạn nói đúng. Tên của bean là giải pháp @Bean (name = "localeResolver") –