JSTL formatDate忽略区域设置

时间:2015-01-13 15:00:41

标签: java localization jstl

我想用JSTL本地化日期,我试着像下面这样做。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<fmt:setLocale value="da_DK" scope="application" />
<fmt:formatDate value="${some.date}" dateStyle="FULL" />

some.datejava.util.Date个实例。我玩各种不同的语言环境,但没有任何工作。无论我选择哪种语言环境,我都会得到以下输出: 2015年1月13日,星期二。在删除上述对setLocale()的调用后,我也尝试了以下操作:

<jsp:useBean id="now" class="java.util.Date" />

<fmt:setLocale value="en_US" />
<fmt:formatDate value="${now}" dateStyle="FULL" />

<fmt:setLocale value="fr_FR" />
<fmt:formatDate value="${now}" dateStyle="FULL" />

以上输出 2015年1月13日星期二两次,对于我尝试过的每个区域设置也是如此。我配置的唯一与locale相关的是以下(Spring MVC项目):

@Bean
public CookieLocaleResolver localeResolver() {
    Locale locale = new Locale("dk");

    CookieLocaleResolver localeResolver = new CookieLocaleResolver();
    localeResolver.setDefaultLocale(locale);

    return localeResolver;
}

文本是否应该翻译成语言环境定义的语言,或者格式是否至少改变了?我在这里做错了什么想法?我尝试了我可以在网上找到的每个例子,但结果是一样的。

1 个答案:

答案 0 :(得分:4)

我只想将范围更改为session,如下所示

<fmt:setLocale value="fr_FR" scope="session"/>

Date in France:
<fmt:formatDate value="${now}" dateStyle="full"/> <br/>

<fmt:setLocale value="en_US" scope="session"/>
 Date in US: 
<fmt:formatDate value="${now}" dateStyle="full" /> <br/>