Java 从控制器获取MessageBundle时出错
我正在尝试从控制器获取消息区域设置,但出现以下错误:Java 从控制器获取MessageBundle时出错,java,spring,message,applicationcontext,Java,Spring,Message,Applicationcontext,我正在尝试从控制器获取消息区域设置,但出现以下错误: org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为org.springframework.context.NoSuchMessageException:对于区域设置'es',在代码'error.alias'下找不到消息 在我的控制器中: ApplicationContext context = MyContext.getApplicationContext();
org.springframework.web.util.NestedServletException
:请求处理失败;嵌套异常为org.springframework.context.NoSuchMessageException
:对于区域设置'es'
,在代码'error.alias'
下找不到消息
在我的控制器中:
ApplicationContext context = MyContext.getApplicationContext();
List errors = null;
// Validar parametros
if (!Filter.onlyLetters(alias)) {
errors.add(context.getMessage("error.alias", null, Locale.getDefault()));
}
MyContext.getApplicationContext()
从实现ApplicationContextAware
的MyApplicationContextAware
获取spring上下文
public class MyContext {
private static ApplicationContext context;
public static void setApplicationContext(ApplicationContext applicationContext) {
context = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return context;
}
}
信息
尝试将完整路径设置为basename:
<property name="basename" value="WEB-INF/classes/messages"/>
编辑:这是在运行web应用程序时还是在单元测试期间发生的?我猜这一定是类路径问题,请检查在您尝试执行的过程中类路径上是否有“WEB-INF/classes”。Hi Adriaan,谢谢您的帮助,但路径是确定的,在JSP中,我使用messageSource和JSTL fmt,工作正常。在这篇文章中,我找到了一个类似问题的解决方案
<bean id="myApplicationContextAware" class="...MyApplicationContextAware" />
/WEB-INF/classes/messages.properties
/WEB-INF/classes/messages_es_ES.properties
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<value>messages</value>
</property>
<property name="basename" value="WEB-INF/classes/messages"/>