除了您的 EL 语法错误(基本上,使用嵌套的双引号,您将属性值结束得太快以至于它变成value="#{fn:substringBefore(aClip.lastTransmittedDate,"
了完全错误的 EL 语法),这毕竟绝对不是正确的方法。
<f:convertDateTime>
转换Date
为,String
反之亦然。正如您错误地预期的那样,它根本不会将String
日期模式 X转换为日期模式 Y。String
给定 a XMLGregorianCalendar
,您需要XMLGregorianCalendar#toGregorianCalendar()
从中获取一个具体java.util.Calendar
实例,这反过来又提供了getTime()
一种从中获取具体java.util.Date
实例的方法,可以直接在<f:convertDateTime>
.
如果您的环境支持 EL 2.2,则应该这样做:
<h:outputText value="#{aClip.lastTransmittedDate.toGregorianCalendar().time}">
<f:convertDateTime pattern="dd.MM.yyyy" />
</h:outputText>
或者,如果您的环境不支持 EL 2.2,则更改模型,例如让 getter 返回java.util.Calendar
:
public Calendar getLastTransmittedDateAsCalendar() {
return lastTransmittedDate.toGregorianCalendar();
}
这样你就可以使用
<h:outputText value="#{aClip.lastTransmittedDateAsCalendar.time}">
<f:convertDateTime pattern="dd.MM.yyyy" />
</h:outputText>
您甚至可以添加一个返回具体的吸气剂java.util.Date
。