Spring安全国际化消息不会重写

时间:2015-08-25 22:41:06

标签: java spring spring-mvc spring-security

您好我试图覆盖Spring安全性的英文默认消息但我有一些特定的消息没有得到覆盖消息那些是我的代码。

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

<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName" value="lang" />
</bean>

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
    <property name="defaultLocale" value="es_MX"/>
    <property name="cookieName" value="gb"/>
    <property name="cookieMaxAge" value="4800"/>
</bean>

<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <property name="interceptors">
        <ref bean="localeChangeInterceptor" />
    </property>
</bean>

对于这个消息是正确的:

AbstractUserDetailsAuthenticationProvider.badCredentials=La clave de usuario y/o contraseña son incorrectas

jsp中显示的消息是:

  

La clave de usuario y /oconseseñasonwrongas

但对于这个:

ConcurrentSessionControlStrategy.exceededAllowed=Esta cuenta ya esta siendo utilizada

我收到此消息:

  

此主体的最大会话数超过

消息打印在jsp中,如下所示:

<c:if test="${not empty param.login_error}">
  <p class="text-danger text-center"><strong>${sessionScope.SPRING_SECURITY_LAST_EXCEPTION.localizedMessage}</strong></p>
</c:if>

正如您所看到的消息在我的自定义消息中正确翻译,但在应用程序中不正确,有人可以帮助我。

我正在使用下一个库

  • Spring 4.1.6.RELEASE
  • Spring security 3.2.7.RELEASE
  • Apache tiles 3.0.5

提前感谢。

1 个答案:

答案 0 :(得分:0)

似乎消息密钥已在Spring Java code中更改,但在messages bundle中未更改。您收到英文消息的原因是因为我链接到的Java代码中提供了默认消息。

尝试:

ConcurrentSessionControlAuthenticationStrategy.exceededAllowed=Esta cuenta ya esta siendo utilizada

它应该有用。

编辑: 甚至在Spring's JIRA上为此创建了一个问题。