开发者

What is wrong with my Spring MessageSource setup?

开发者 https://www.devze.com 2023-03-11 05:17 出处:网络
I\'m attempting to set up a ReloadableResourceBundleMessageSource to use in my JSPs and Controller.Here\'s the pieces I have.The message key is printing to the screen in my jsp. What am I missing?

I'm attempting to set up a ReloadableResourceBundleMessageSource to use in my JSPs and Controller. Here's the pieces I have. The message key is printing to the screen in my jsp. What am I missing?

spring-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>
</bod开发者_StackOverflow社区y>


Yeah, this tripped me up for a long time too. The bean id has to be called messageSource.


I am posting my answer for java-based configuration because I ran into the same problem when I switched from xml to a java-based config application and it was a total pain in the a** to figure out why it wasn't working. (Turns out for me, the was the same issue @jiggy pointed out... wouldn't you know...)

    @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;
    }


And also don't forget to declare the messageSource application wide and not in servlet spring beans.

0

精彩评论

暂无评论...
验证码 换一张
取 消