programing

함수에 매개 변수로 전달하지 않고 Spring에서 현재 사용자 로케일을 가져오는 방법은 무엇입니까?

yellowcard 2023. 7. 29. 08:20
반응형

함수에 매개 변수로 전달하지 않고 Spring에서 현재 사용자 로케일을 가져오는 방법은 무엇입니까?

Spring 3.1을 사용하고 있으며 현재 사용자에 대해 활성화된 로케일을 찾고자 합니다. 컨트롤러에서 서비스 계층으로 로케일을 강제로 전달하지 않고 직접 가져올 수 있는 방법 등이 있습니다.

스프링은 어떤 정적 방법을 호출하여 잡을 수 있는 스레드 로컬 스토리지에 로케일을 저장합니까?

저는 또한 어떻게 하면 통과하지 않고 로케일에 액세스할 수 있는지 찾고 있었습니다.Locale하지만 저는 아직 스프링에 익숙하지 않아서 대부분의 해결책들이 혼란스럽다는 것을 알게 되었습니다.그러나 Spring MVC는 스레드 로컬 스토리지에 로케일을 저장하는 것으로 나타났습니다.다음을 통해 액세스할 수 있습니다.

Locale locale = LocaleContextHolder.getLocale();

마지막 접근 방식 [...]은(는) 아키텍처의 엔티티에 현재 로케일을 제공하기 위해 로컬 스레드를 기반으로 합니다. [...] LocaleContextHolder의 내용은 기본적으로 웹 요청에 지정된 로케일에 해당합니다.

시작: Spring MVC 3으로 로케일 전환 구성. (이 게시물은 로케일을 가져오는 대체 구성/방법도 제공하며, 이는 이 작업을 원하는 모든 사람에게 유용할 수 있습니다.)

또한 다음을 볼 수 있습니다.LocaleContextHolder여기 봄에서 온 문서들.

로케일을 저장하도록 구성한 위치, 세션 또는 쿠키에 따라 다릅니다.

애플리케이션에서 아래에 언급된 구성으로 세션에 사용자 로케일을 저장하도록 구성했습니다.

    <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컨텍스트, 그래서 그냥 추가했습니다(해킹처럼 보이지만, 우리가 찾은 가장 빠른 해결책).

언급URL : https://stackoverflow.com/questions/10792551/how-to-obtain-a-current-user-locale-from-spring-without-passing-it-as-a-paramete

반응형