Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从控制器获取MessageBundle时出错_Java_Spring_Message_Applicationcontext - Fatal编程技术网

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"/>