0

Spring MVC を使用して webapp を作成しました。次のように、ディスパッチャーサーベットでインターセプターを介して国際化を設定しました。

<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.CookieLocaleResolver">
    <property name="defaultLocale" value="es" />
</bean>

次に、次のようにコントローラーで現在のロケールにアクセスできます。

LocaleContextHolder.getLocale()

いつでもロケールを変更して、現在の構成にどこからでもアクセスできるため、これは素晴らしいことです。

ここで、アプリのすべての動作にわずかに影響を与えるという意味で、同様の方法で動作するいくつかのカスタム変数で同じことをしたいと思います。(たとえば、「アクセス可能な」パラメーターは、アクセス可能なコンテンツのみを提供する必要があるアプリを示します)。

次のように、「アクセス可能」という名前のパラメーターをインターセプトする独自のインターセプターを作成できることを理解しています。

<bean id="localeChangeInterceptor" class="com.myapp.MyInterceptor">
    <property name="paramName" value="accesible" />
</bean>

しかし、LocaleContextHolder オブジェクトがロケールで行うように、アプリ全体でこの値にアクセスできる方法はありますか? Cookie likeso を介して Spring に注入させることはできますか?

4

1 に答える 1

0

アプリ全体で言う場合、「アプリ全体」(サービス、dao/リポジトリなど) を意味しますか、それともアプリの Web 部分だけを意味しますか? RequestContextHolder ( http://docs.spring.io/spring/docs/3.0.x/javadoc-api/org/springframework/web/context/request/RequestContextHolder.html ) はあなたのケースに役立ちますか? RequestAttributes インターフェイスの実装である currentRequestAttributes を取得するオプションがあります。

私は個人的に試したことはありませんが、RequestAttributes javadoc には、「「グローバル セッション」というオプションの概念を使用して、リクエスト スコープの属性とセッション スコープの属性へのアクセスをサポートする」という記述があります。

于 2013-09-26T16:21:46.567 に答える