64

如果#{myBean.birthdate}java.util.Calendarjava.util.Date类型,我是否可以使用现有函数在 EL 本身内部对其进行格式化,输出类似于由DateFormat's SHORTMEDIUMLONGabdFULL输出类型产生的输出?

而不是输出完整的表单#{myBean.birthdate}: Wed Jan 19 19:01:42 WIT 2011,我更喜欢Jan 19, 2011的简单输出。

我应该#{formatBean.format(myBean.birthdate)}改用吗?

4

3 回答 3

169

使用<f:convertDateTime>. 您可以将其嵌套在任何输入和输出组件中。模式规则与 相同java.text.SimpleDateFormat

<h:outputText value="#{someBean.dateField}" >
    <f:convertDateTime pattern="dd.MM.yyyy HH:mm" />
</h:outputText>
于 2011-01-19T12:15:30.213 回答
27

如果您使用OmniFaces,您还可以使用它的 EL 功能of:formatDate(),例如格式化Date对象。你会像这样使用它:

<h:outputText value="#{of:formatDate(someBean.dateField, 'dd.MM.yyyy HH:mm')}" />

这样,您不仅可以将其用于输出,还可以将其传递给其他 JSF 组件。

于 2013-12-16T13:31:19.510 回答
7

使用EL 2(表达式语言 2),您可以使用这种类型的构造来解决您的问题:

    #{formatBean.format(myBean.birthdate)}

或者你可以在你的 bean 中添加一个替代的 getter 导致

    #{myBean.birthdateString}

其中 getBirthdateString 返回正确的文本表示。如果它是实体,请记住将 get 方法注释为 @Transient。

于 2011-07-09T12:22:48.420 回答