无法更改HTTP接受标头-使用其他区域设置解析策略

问题

在Spring MVC应用程序中,使用“ org.springframework.web.servlet.i18n.LocaleChangeInterceptor ”更改语言环境时,出现以下错误

java.lang.UnsupportedOperationException: 
     Cannot change HTTP accept header - use a different locale resolution strategy
     ...AcceptHeaderLocaleResolver.setLocale(AcceptHeaderLocaleResolver.java:45)

在Spring MVC应用程序中,如果不配置Spring的LocaleResolver,它将使用默认的AcceptHeaderLocaleResolver ,该默认值不允许更改语言环境。 要解决这个问题,请尝试在Spring bean配置文件中声明一个SessionLocaleResolver bean,它在大多数情况下应该是合适的。

<beans ...

	<bean id="localeResolver"
		class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
		<property name="defaultLocale" value="en" />
	</bean>

	<bean id="localeChangeInterceptor"
		class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
		<property name="paramName" value="language" />
	</bean>
	
	<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" >
		<property name="interceptors">
			<list>
				<ref bean="localeChangeInterceptor" />
			</list>
		</property>
	</bean>
	
</beans>

参考

  1. LocaleResolver文档

翻译自: https://mkyong.com/spring-mvc/cannot-change-http-accept-header-use-a-different-locale-resolution-strategy/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值