首页 > 解决方案 > 无法更改 HTTP 接受标头 - 对包含“lang”的多部分 FormData 使用不同的区域设置解析策略

问题描述

在 Spring Boot 1.5.9 应用程序中,我有以下内容LocaleResolver


    @Bean
    public LocaleResolver localeResolver() {
        AcceptHeaderLocaleResolver acceptHeaderLocaleResolver = 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);
            }
        };
        acceptHeaderLocaleResolver.setDefaultLocale(webMvcProperties.getLocale());
        return acceptHeaderLocaleResolver;
    }

    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
        lci.setParamName("lang");
        return lci;
    }

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

出于某种原因,我有一个副作用,当我POST包含一个名为的键的多部分表单数据时lang,我有以下错误:

Cannot change HTTP accept header - use a different locale resolution strategy

为什么以及如何解决这个问题以便能够form在我的表单数据中使用?

标签: javaspringspring-bootspring-mvcspring-data

解决方案


推荐阅读