除了你的EL語法錯誤(基本上,用這個嵌套的雙引號你會很快結束屬性值,它變成value="#{fn:substringBefore(aClip.lastTransmittedDate,"
這完全是錯誤的EL語法),畢竟這絕對不是正確的方法。
<f:convertDateTime>
將Date
轉換爲String
,反之亦然。它不會將日期模式X中的String
轉換爲日期模式Y中的String
,因爲您錯誤地認爲這是預期的。
給出一個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
的吸氣劑。