Spring消息包问题

时间:2012-07-04 12:25:30

标签: java spring spring-mvc spring-security

我的网络应用程序中有一个弹簧安全设置。我想用我的自定义消息替换一些spring security的消息,即

而不是Bad Credentials我希望AbstractUserDetailsAuthenticationProvider.badCredentials具有值invalid username or password, please try again

这是我的弹簧设置:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/messages/messages"/>
<!-- Tried this as well <property name="basename" value="/WEB-INF/messages/messages.properties"/> -->
<property name="cacheSeconds" value="0" />
<property name="defaultEncoding" value="UTF-8" />
</bean>

我在名为WEB-INF的{​​{1}}中创建了文件夹。在此文件夹中有一个名为messages的文件。在这个文件里面是一行:

messages.properties

我在这里做错了什么?

更新:

此servlet-context在web xml中定义:

AbstractUserDetailsAuthenticationProvider.badCredentials=invalid username or password, please try again

问题解决了,将messageSource bean定义移动到另一个上下文。

1 个答案:

答案 0 :(得分:1)

一切看起来都很正确。尝试使用spring message标记获取消息,以检查问题是否与您的配置或安全消息有关:

<spring:message code="AbstractUserDetailsAuthenticationProvider.badCredentials" />

如果这确实有效,问题不在于您的配置(对我来说这看起来不错)。

无论如何,尝试将您的消息文件放在类路径(源文件夹)和此:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="classpath:messages/messages"/>
    <property name="cacheSeconds" value="0" />
    <property name="defaultEncoding" value="UTF-8" />
</bean>

另外,检查bean是否在Spring知道的应用程序上下文文件中声明。