gpt4 book ai didi

java - 基于 Spring MVC LocaleChangeInterceptor 注释的方法不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:04:40 25 4
gpt4 key购买 nike

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我基本翻译完了教程的 XML。

奇怪的是,当我转到 ...?language=fr 时它不起作用。

但是,以下内容确实有效(在 app-servlet.xml 中)(注意这里它使用的是 locale):

<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="locale" />
</bean>
</mvc:interceptors>

另一件需要注意的重要事情是,当我在上述方法上放置断点时,所有这三个方法,每个断点都会中断,这意味着“有人”正在读取值。

那么,为什么我的基于注释的拦截器不起作用?

最佳答案

通过 WebMvcConfigurerAdapter 扩展配置类可能会有所帮助。添加拦截器条目覆盖

public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}

方法。还为 LocaleChangeInterceptor

添加 bean 条目
@Bean 
public LocaleChangeInterceptor localeChangeInterceptor(){
LocaleChangeInterceptor localeChangeInterceptor=new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("language");
return localeChangeInterceptor;
}

关于java - 基于 Spring MVC LocaleChangeInterceptor 注释的方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11752710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com