ela*_*las 3 java locale spring-mvc spring-security
我需要在成功验证后更改区域设置.
LocaleResolver中:
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lng" />
</bean>
<bean id="localeResolver"
class="web.MyLocaleResolver">
</bean>
Run Code Online (Sandbox Code Playgroud)
public class MyLocaleResolver extends AbstractLocaleResolver {
private Locale default = Locale.ENGLISH;
@Override
public Locale resolveLocale(HttpServletRequest hsr) {
return this.default;
}
@Override
public void setLocale(HttpServletRequest hsr, HttpServletResponse hsr1, Locale default) {
this.default = default;
}
}
Run Code Online (Sandbox Code Playgroud)
安全:
<form-login login-page="/login"
authentication-success-handler- ref="MySuccessAuthHandler"/>
<beans:bean id="MySuccessAuthHandler" class="web.MySuccessfulAuthenticationHandler">
<beans:property name="defaultTargetUrl" value="/index.htm"></beans:property>
</beans:bean>
Run Code Online (Sandbox Code Playgroud)
public class MySuccessfulAuthenticationHandler extends SavedRequestAwareAuthenticationSuccessHandler {
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws ServletException, IOException {
super.onAuthenticationSuccess(request, response, authentication);
RequestContextUtils.getLocaleResolver(request).setLocale(request, response, Locale.ENGLISH);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试设置语言环境时,RequestContextUtils我得到NullPointer异常.
LocaleResolver在请求上下文中公开DispatcherServlet,而AuthenticationSuccessHandler在请求进入之前被触发DispatcherServlet(实际上,被激活的请求SavedRequestAwareAuthenticationSuccessHandler永远不会进入DispatcherServlet,因为此处理程序执行重定向).
因此,在这种情况下,您无法访问LocaleResolvervia RequestContextUtils.你可以尝试注入LocaleResolver到你的AuthenticationSuccessHandler明确,例如,与自动装配.
| 归档时间: |
|
| 查看次数: |
4557 次 |
| 最近记录: |