如果#{myBean.birthdate}
属于java.util.Calendar
或java.util.Date
类型,我是否可以使用现有函数在EL内部格式化它,其输出类似于{ {1}} DateFormat
,SHORT
,MEDIUM
abd LONG
输出类型?
而不是输出FULL
的完整表格: 2011年1月19日星期三19:01:42 WIT 2011 ,我只是更喜欢 2011年1月19日的简单输出< /强>
我应该使用#{myBean.birthdate}
吗?
答案 0 :(得分:150)
使用<f:convertDateTime>
。您可以将其嵌套在任何输入和输出组件中。模式规则与java.text.SimpleDateFormat
相同。
<h:outputText value="#{someBean.dateField}" >
<f:convertDateTime pattern="dd.MM.yyyy HH:mm" />
</h:outputText>
答案 1 :(得分:25)
如果使用OmniFaces,您还可以使用of:formatDate()
之类的EL函数来格式化Date
个对象。你可以这样使用它:
<h:outputText value="#{of:formatDate(someBean.dateField, 'dd.MM.yyyy HH:mm')}" />
这样,您不仅可以将其用于输出,还可以将其传递给其他JSF组件。
答案 2 :(得分:6)
使用 EL 2(表达式语言2),您可以将此类构造用于您的问题:
#{formatBean.format(myBean.birthdate)}
或者你可以在你的bean中添加一个替代的getter,结果是
#{myBean.birthdateString}
其中getBirthdateString返回正确的文本表示。如果它是实体,请记住将get方法注释为@Transient。