- 发送请求xxxxx?locale = en后,它将创建不带“国家/地区”属性的语言环境(仅设置语言)。
这是预期的行为。在Java中,存在某种层次结构。语言比国家更通用。
背后的想法是,例如,您可以使用更通用的语言显示文本,但可以在特定于国家/地区的文件中包含某些单位(例如货币)。
@see:http :
//java.sun.com/developer/technicalArticles/Intl/IntlIntro/
- 更严重的问题是它不起作用…
它应该无需任何手工实现即可工作!
您需要注册本地更改拦截器,并需要为登录页面设置permitAll。
<mvc:interceptors> <bean p:paramName="lang"/></mvc:interceptors><http auto-config="true" use-expressions="true"> <form-login login-processing-url="/resources/j_spring_security_check" login-page="/login" authentication-failure-url="/login?login_error=t"/> <logout logout-url="/resources/j_spring_security_logout"/> <!-- Configure these elements to secure URIs in your application --> <intercept-url pattern="/login" access="permitAll" /> <intercept-url pattern="/resources/**" access="permitAll" /> <intercept-url pattern="/**" access="isAuthenticated()" /></http>
要查看此示例的运行情况,请使用该roo脚本创建一个roo项目:
// Spring Roo 1.1.5.RELEASE [rev d3a68c3] log opened at 2011-12-13 09:32:23project --topLevelPackage de.humanfork.test --projectName localtest --java 6persistence setup --database H2_IN_MEMORY --provider HIBERNATE ent --class ~.domain.Stufffield string --fieldName titlecontroller all --package ~.websecurity setupweb mvc language --pre deweb mvc language --pre es
然后,您只能更改安全过滤器的跨URL模式,如我在上面(
applicationContext-security.xml)所示!
现在,您有了一个应用程序,用户可以通过应用程序中的本地更改拦截器(当用户登录时)以及未登录时(在登录页面中)更改其本地用户



