0

私の現在のプロジェクトでは、カスタマイズされた「システム日付」が必要です。これは、システム日付と、i18n プロパティ ファイルで定義された形式を意味します。しかし、それを扱うクラスは一般的なユーティリティ クラスですが、Web レイヤー内ではありません。ただし、(日付形式を解決するための) ロケールは HttpServletRequest オブジェクトから取得する必要があります。HttpServletRequest インスタンスをそのユーティリティ クラスに自動配線することを考えています。デザインパターンを壊しているように見えますが、海賊版だと思います。しかし、うまくいきません。Spring の他のレイヤーで Locale を解決するためのより良い方法はありますか?

前もって感謝します。

4

2 に答える 2

2

Locale単純にユーティリティ クラスをオーバーロードして、影響を受けるメソッドの as パラメータを受け入れる方がはるかに洗練されていると思いませんか。次に、コントローラーでロケールを取得し、それをユーティリティに渡すことができます。

于 2012-05-07T14:56:56.107 に答える
0

Spring Framework の SessionLocaleResolver を使用することをお勧めします。セッション内のロケールを変更して保存するため、アプリケーションのコードの任意の時点で取得できます。

以下の構成を参照してください。また、理解を深めるために、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>
        </list>
        </property>
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>

これがお役に立てば幸いです。乾杯。

于 2012-05-08T09:16:04.830 に答える