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)

更新:我必须实现一个 DateEditor 进行验证,告诉 Spring 使用哪个语言环境来提交数据。

于 2012-08-31T12:12:26.293 回答