我想从我的控制器发送本地化的电子邮件。
我的本地化已配置好并且在我的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;
所以理论上我将消息源自动装入控制器,如下所示:
@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?
我们非常感谢任何建议。
答案 0 :(得分:1)
尝试使用MessageSource而不是ReloadableResourceBundleMessageSource
@Autowired
private MessageSource messageSource;