Spring MVC:控制器中的本地化

时间:2017-02-24 02:29:33

标签: spring spring-mvc localization

我想从我的控制器发送本地化的电子邮件。

我的本​​地化已配置好并且在我的Thymeleaf瓷砖中正常工作。

我的配置如下:



	...
	<!-- i18n -->
	<bean id="messageSource"
		class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		 <property name="basenames">
            <list>
                <value>classpath:messages</value>
                <value>classpath:cpcscorereport</value>
            </list>
        </property>
		<property name="defaultEncoding" value="UTF-8" />
	</bean>


<bean id="localeChangeInterceptor"
		class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
		<property name="paramName" value="lang" />
	</bean> 
	
	
	<bean id="handlerMapping"
		class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
		<property name="interceptors">
			<ref bean="localeChangeInterceptor" />
		</property>
	</bean>


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

	...

</beans>
&#13;
&#13;
&#13;

所以理论上我将消息源自动装入控制器,如下所示:

    @Autowired
private ReloadableResourceBundleMessageSource messageSource;

然后按如下方式访问消息:

        String message = messageSource.getMessage("report.title", null, LocaleContextHolder.getLocale());
        SSm.getLogger().debug("localized message:   "+message);

BUt我在autowire上得到以下异常

  

2017年2月23日18:19:06.969 SEVERE [http-nio-8080-exec-4] org.apache.catalina.core.StandardWrapperValve.invoke为servlet AssessmentDelivery分配异常    org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到类型为[org.springframework.context.support.ReloadableResourceBundleMessageSource]的限定bean依赖:预期至少有1个bean符合此依赖关系的autowire候选者。依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}

为什么不在控制器中拾取自动装配的bean?

我们非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

尝试使用MessageSource而不是ReloadableResourceBundleMessageSource

@Autowired
private MessageSource messageSource;