【问题标题】:JSTL fmt:formatDate with locale dependent pattern [duplicate]JSTL fmt:formatDate 与区域设置相关模式[重复]
【发布时间】:2020-07-05 09:12:45
【问题描述】:

在 JSP 页面中,我必须显示一些日期,但没有一种可用的日期格式(短、中或长)适合我。

<fmt:formatDate value="${someDate}" type="date" dateStyle="short"/>
<fmt:formatDate value="${someDate}" type="date" dateStyle="medium"/>
<fmt:formatDate value="${someDate}" type="date" dateStyle="long"/>

我不得不求助于一个特定的模式:

<fmt:formatDate value="${someDate}" type="date" pattern="dd-MM/yyyy"/>

但是,模式本身是依赖于语言环境的,我的意思是,我想从消息包中加载模式。我该怎么做?

我试过了

<fmt:formatDate value="${someDate}" type="date" pattern="<fmt:message key='date.format.short'/>"/>

但它不起作用。

【问题讨论】:

  • 我猜你想要德语格式?如果是这样,请将语言环境设置为德语,那么 dateStyle 可能更适合。
  • @BalusC 根据您的建议,问题将保持不变,因为对于一个语言环境(例如 cs)我会映射另一个语言环境(例如 de)等等,因此“设置为的语言环境”将依赖于语言环境。不,我不想要德语格式。我帖子中的那个模式只是一个例子。它几乎可以是任何东西(当然,任何有效的模式)。我只是希望它依赖于语言环境。我将编辑问题以使其清楚。

标签: jsp jstl jsp-tags jstl-functions


【解决方案1】:

您可以使用&lt;c:set&gt;标签来存储模式的值。

这样的事情会做你想做的事:

<c:set var="myPattern"><fmt:message key="date.format.short" /></c:set>

<fmt:formatDate value="${someDate}" type="date" pattern="${myPattern}" />

或者更好的是,正如@Sachin 所指出的,使用var 属性:

<fmt:message key="date.format.short" var="${myPattern}"/>

<fmt:formatDate value="${someDate}" type="date" pattern="${myPattern}" />

【讨论】:

  • 这个比较简单
  • 没错。我最近使用没有定义 var 属性的 JSF &lt;h:outputFormat&gt;,我很困惑。
猜你喜欢
  • 2011-04-02
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
  • 2021-06-17
相关资源
最近更新 更多