함수에 매개 변수로 전달하지 않고 Spring에서 현재 사용자 로케일을 얻는 방법은 무엇입니까?
저는 Spring 3.1을 사용하고 있으며 현재 사용자에 대해 활성화 된 로케일을 찾고 싶습니다. 컨트롤러에서 서비스 계층으로 전달하지 않고 로케일을 직접 가져 오는 방법이 있습니다.
스프링은 정적 메서드를 호출하여 얻을 수있는 스레드 로컬 저장소에 로케일을 저장합니까?
나는 또한 Locale
주변을 지나치지 않고 로케일에 액세스하는 방법을 찾고 있었지만 여전히 Spring을 처음 접했으며 대부분의 솔루션이 혼란 스럽다는 것을 알았습니다. 그러나 Spring MVC는 스레드 로컬 스토리지에 로케일을 저장합니다. 다음을 통해 액세스 할 수 있습니다.
Locale locale = LocaleContextHolder.getLocale();
마지막 접근 [...]은 아키텍처의 모든 엔티티에서 현재 로케일을 제공하기 위해 스레드 로컬을 기반으로합니다. [...] LocaleContextHolder의 내용은 기본적으로 웹 요청에 지정된 로케일에 해당한다는 것을 알고 있어야합니다.
From : Spring MVC 3로 로케일 전환 구성 . (이 게시물은 또한 로케일을 가져 오기위한 대체 구성 / 방법을 제공하므로이를 수행하려는 모든 사람에게 유용 할 수 있습니다).
여기LocaleContextHolder
에서 Spring 의 문서를 볼 수도 있습니다 .
로케일을 저장하도록 구성한 위치, 세션 또는 쿠키에 따라 다릅니다.
내 응용 프로그램에서 아래에 언급 된 구성으로 세션에 사용자 로캘을 저장하도록 구성했습니다.
<mvc:interceptors>
<ref bean="localeChangeInterceptor"/>
</mvc:interceptors>
<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.SessionLocaleResolver">
<property name="defaultLocale" value="en"/>
</bean>
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>/WEB-INF/i18n/labels</value>
<value>/WEB-INF/i18n/messages</value>
<value>/WEB-INF/i18n/include</value>
</list>
</property>
<property name="defaultEncoding" value="UTF-8"/>
</bean>
이와 같은 작업을 수행 한 경우 세션에서 로케일 매개 변수를 쉽게 검색 할 수 있습니다.
도움이 되었기를 바랍니다.
건배.
우리는 같은 요구를했다, 그래서 퍼팅 함께했다 Locale
으로 ThreadLocal
상황. 우리는 이미 ThreadLocal
컨텍스트에 저장된 객체 (일부 사용자 정보)가 있었으므로 그냥 추가했습니다 (핵처럼 보이지만 우리가 찾은 가장 빠른 솔루션).
'IT TIP' 카테고리의 다른 글
JPA : 모델 계층 구조 구현-@MappedSuperclass 대 @Inheritance (0) | 2020.12.14 |
---|---|
WAS (Windows Process Activation Service)에서 응용 프로그램 풀을 제공하기 위해 작업자 프로세스를 시작할 때 오류가 발생했습니다. (0) | 2020.12.14 |
벡터의 값을 기반으로 데이터 프레임에서 행 선택 (0) | 2020.12.14 |
거대한 벡터 목록을 행렬로 더 효율적으로 변환하는 방법은 무엇입니까? (0) | 2020.12.14 |
Xcode 예외 중단 점이 throw되는 예외의 세부 정보를 인쇄하지 않습니다. (0) | 2020.12.14 |