2014-10-29 3 views
0
@Autowired 
private SessionLocaleResolver localeResolver; 

@Override 
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, 
     Authentication authentication) throws IOException, ServletException { 
    // clean previous failed access 
    authorizationServiceConfig.cleanUserFailedAccess(); 

    // set the session locale 
    localeResolver.setLocale(request, response, authorizationServiceConfig.getUserLocale()); 

    //redirect login.. 
    handle(request, response, authentication); 

} 

인증 서비스에서 이전에 설정 한 SessionLocaleResolver 로캘 값을 가져와야합니다. 하지만 난 그것에 어떤 포인터가없는 방법에서 현재 요청을받을 경우 당신이 원하는 모든이, RequestContextHolder 당신의 친구 경우 여기에 요청 :(현재 세션 로케일을 얻는 방법?

public String getMessage(String key) { 
    String answer; 

    if (key == null) { 
     return ""; 
    } 
    try { 
     answer = getMessageSourceAccessor().getMessage(key, "here i need the Session locale"); 
    } catch (Exception e) { 
     answer = key; 
    } 
    return answer; 
} 

답변

0

을 가지고 있겠지. 그것이 일반적인 요구 사항, 봄 매장이기 때문에 당신이 PortletRequestAttributes하고 마침내를 사용하는 것 - 작품이 서블릿 응용 프로그램 방식이 아닌 포틀릿들에서이 경우 물론

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder 
           .getRequestAttributes()).getRequest(); 

: 스레드 지역 변수의 개체 및이 클래스의 정적 메서드를 통해 액세스를 제공 get a PortletRequest

+0

어떻게 생각하십니까? Spring WebFlow의 사용법? – dimitrisli

+0

'RequestContextHolder'는'DispatcherServlet'에 의해 자동으로 활성화됩니다. 'DispatcherServlet'을 사용하지 않으면 ServletContext에'RequestContextListener'를 등록하는 것만으로 충분합니다. 그것은 Spring WebFlow에 아무런 의존성이 없습니다. –

+0

당신이 옳습니다. 나는 org.springframework.webflow.execution.RequestContextHolder를 알고 있었다. 분명히 org.springframework.web.context.request.RequestContextHolder가있다. – dimitrisli

관련 문제