第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Spring LocalResolver 基于查詢參數(shù)“lang=en”?

Spring LocalResolver 基于查詢參數(shù)“lang=en”?

九州編程 2021-07-19 16:12:11
我可以告訴spring-boot自動(dòng)解析查詢參數(shù)所請求locale的,例如&lang=en嗎?我想讓查詢參數(shù)優(yōu)先于Accept-Language參數(shù)。我發(fā)現(xiàn)了以下兩個(gè)屬性,但與查詢參數(shù)無關(guān)。spring.mvc.locale= # Locale to use. By default, this locale is overridden by the "Accept-Language" header.spring.mvc.locale-resolver=accept-header # Define how the locale should be resolved.我嘗試如下,這給出了一個(gè)例外:@Configurationpublic class AppConfig extends WebMvcConfigurerAdapter {   @Bean   public LocaleChangeInterceptor localeChangeInterceptor() {       LocaleChangeInterceptor lci = new LocaleChangeInterceptor();       lci.setParamName("lang");       return lci;   }   @Override   public void addInterceptors(InterceptorRegistry registry) {       registry.addInterceptor(localeChangeInterceptor());   }}結(jié)果是:java.lang.UnsupportedOperationException: Cannot change HTTP accept header - use a different locale resolution strategy
查看完整描述

2 回答

?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊

解決辦法大概如下。我仍然發(fā)現(xiàn)設(shè)置非常違反直覺。特別是我會(huì)期望:

  • LocaleChangeInterceptor自身注冊,但不并有來電addInterceptors()

  • spring.mvc.locale參數(shù)仍然設(shè)置到自定義 LocaleResolver 中,但不會(huì)并且必須從WebMvcProperties

如果需要所有這些,文檔可能需要對此進(jìn)行更多解釋。

@Configuration

public class AppConfig extends WebMvcConfigurerAdapter {

   @Bean

   public LocaleChangeInterceptor localeChangeInterceptor() {

       LocaleChangeInterceptor lci = new LocaleChangeInterceptor();

       lci.setParamName("lang");

       return lci;

   }


   @Override

   public void addInterceptors(InterceptorRegistry registry) {

       registry.addInterceptor(localeChangeInterceptor());

   }


   @Bean

   public AcceptHeaderLocaleResolver localeResolver(WebMvcProperties mvcProperties) {

        AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver() {

            @Override

            public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {

                LocaleContextHolder.setLocale(locale);

            }

        };


        localeResolver.setDefaultLocale(mvcProperties.getLocale());

        return localeResolver;

    }

}

討論后更新改進(jìn)版本:


@Configuration

public class AppConfig implements WebMvcConfigurer {

   @Bean

   public AcceptHeaderLocaleResolver localeResolver(WebMvcProperties mvcProperties) {

        AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver() {

        @Override

        public Locale resolveLocale(HttpServletRequest request) {

            String locale = request.getParameter("lang");

            return locale != null

                    ? org.springframework.util.StringUtils.parseLocaleString(locale)

                    : super.resolveLocale(request);

        }

        };


        localeResolver.setDefaultLocale(mvcProperties.getLocale());

        return localeResolver;

    }

}


查看完整回答
反對 回復(fù) 2021-07-23
  • 2 回答
  • 0 關(guān)注
  • 228 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)