2

私は Spring 3 MVC アプリケーションに取り組んでおり、ユーザーのロケールに基づく日付形式を指定したい JQuery 日付ピッカーがあります。@ModelAttribute アノテーション付きコントローラーメソッドの使用を調べましたが、リクエストコンテキストを取得する方法がわかりませんでした。

現在のコード:

<script type="text/javascript">
    <![CDATA[
        $( "#startDate").datepicker({
            showOn: "both",
            buttonImage: "${calendarIconUrl}",
            dateFormat:'yy/mm/dd',
            minDate:0
        });
    ]]>
</script>

だから'yy/mm/dd'、ロケールベースの日付形式に置き換えたいのです。

編集: http://docs.jquery.com/UI/Datepicker/Localizationを見つけましたが、ブラウザから国コードを取得する方法を考える必要があります...

4

1 に答える 1

1

サーバー環境によってロケールが設定されているという同様の問題がありました(必要に応じてブラウザのロケールとは対照的です)。この方法で Java ロケールを JQuery Datepicker ロケールに「翻訳」しました。

Locale locale = LocaleContextHolder.getLocale();
String datepickerLocale;
if(locale.getLanguage().equals("de")){
    datepickerLocale = "de"; // only "de", no country code
} else if (locale.getLanguage().equals("en")){
    if(locale.getCountry().equals("GB")){
        datepickerLocale = "en-GB"; // en-GB must be set explicitly
    } else if(locale.getCountry().equals("US")){
        datepickerLocale = ""; // en-US is default
    }
}
// [...] more locales if needed, see docs for Datepicker Localization
uiModel.addAttribute("datepickerLocale", datepickerLocale);

そして、ビューに設定します:

$.datepicker.setDefaults( $.datepicker.regional['${datepickerLocale}'] );

ブラウザからのロケールの取得 (リクエスト) は次のようになります (未テスト)

RequestContextUtils.getLocaleResolver(request).resolveLocale(request)

更新:送信されたデータに使用するロケールをSpringに伝える検証用のDateEditorを実装する必要がありました。

于 2012-08-31T12:12:26.293 に答える