通过实践,有两种方式是可实现SS的汉化
第一种,利用Spring webmvc的本地化类CookieLocaleResolver
这种方式需要引用springframework webmvc的jar包;
在applicationContext.xml里定义它,并制定默认本地语言
- <bean
- id=“localeResolver”
- class=“org.springframework.web.servlet.i18n.CookieLocaleResolver”>
- <property
- name=“defaultLocale”
- value=“zh_CN” />
- </bean>
同时在security.xml中指定messageSource所在位置:
- <beans:bean
- id=“messageSource”
- class=“org.springframework.context.support.ResourceBundleMessageSource”>
- <beans:property
- name=“basenames”>
- <beans:list>
- <beans:value>messages</beans:value>
- <beans:value>org/springframework/security/messages</beans:value>
- </beans:list>
- </beans:property>
- </beans:bean>
注意:我的applicationContext.xml和security.xml定义bean的命名空间不一样;
这时候重新启动应用,尝试用错误的用户名密码登录,看提示有没有变化,是否跟下图一样
SS的中文化也确认让人蛋疼的,命名用户名错误,翻译成了坏的凭证,这个问题可以修改下Messages_zh_CN.properties中的定义
第二种方案:解压出messages_zh_CN.properties放置到项目的classpath(resources)下
资源文件位于spring-security-core*.*的jar包的org.springframework.security目录下,将其解压后把messages_zh_CN.properties复制到resources的目录下
在security.xml中定义messageSource
- <beans:bean
- id=“messageSource”
- class=“org.springframework.context.support.ReloadableResourceBundleMessageSource”>
- <beans:property
- name=“basename”
- value=“classpath:messages_zh_CN” />
- </beans:bean>
再将其注入到authProvider
- <beans:property
- name=“messageSource”
- ref=“messageSource” />
重启应用,用错误用户名,密码登录同样可看到应用汉化了。