我的Spring MessageSource设置有什么问题?

时间:2011-06-09 02:57:10

标签: java spring jsp spring-mvc

我正在尝试设置一个ReloadableResourceBundleMessageSource以在我的JSP和Controller中使用。这是我的作品。消息键正在我的jsp中打印到屏幕。我错过了什么?

弹簧servlet.xml中

<bean id="messages" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basenames">
        <value>/WEB-INF/messages/login</value>
    </property>
</bean> 

login_en.properties

login.title=Welcome to the login page.

针对home.jsp

<body>
  <spring:message code="login.title" text="login.title"></spring:message>
</body>

3 个答案:

答案 0 :(得分:4)

是的,这让我绊倒了很长时间。 bean id必须被称为messageSource。

答案 1 :(得分:1)

我发布了基于java的配置的答案,因为当我从xml切换到基于java的配置应用程序时遇到了同样的问题,这是一个完全痛苦的问题**弄清楚它为什么不起作用。 (事实证明,@ jiggy指出的是同样的问题......你不知道......)

    @Bean(name = "validator")
    public LocalValidatorFactoryBean getLocalValidatorFactoryBean() {
        final LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
        validator.setValidationMessageSource(this.getMessageSource());
        validator.afterPropertiesSet();
        return validator;
    }

    @Bean(name = "messageSource") // --> !!! This is what is so important!!!
    public MessageSource getMessageSource() {
        final ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); // easily swapped out with  "ReloadableResourceBundleMessageSource", my app just doesn't have any necessary reloadable  message requirements.
        messageSource.setBasenames(ERROR_MESSAGE_DIRECTORY); // static String for a direct path to your "ValidationMessages.properties" file or whatever name you've given it.
        return messageSource;
    }

答案 2 :(得分:0)

并且不要忘记将messageSource应用程序声明为广泛而不是servlet spring beans。