在 jdon 框架中使用日期型別時要注意的問題

lqixv發表於2008-03-28
在開發過程中,我發現有一個問題要注意:當我們在 ActionForm、model(模型)中使用了 java.util.Date 類來定義時間屬性的時候,對這個屬性的讀寫就會出錯。我追查了很久,最後問題出在模型與 form 之間的熟悉複製過程中。我看了一下框架原始碼,在框架原始碼中,模型和 form 之間的屬性傳遞是透過 apache 的一個公共元件中的類方法:PropertyUtils.copyProperties 來進行復制的。而這個方法有個需要注意的地方,那就是 java.util.Date 類的屬性是不被支援互相複製的,而它的子類java.sql.Date是被支援的。因此如果物件包含時間型別的屬性,且希望被轉換的時候,一定要使用java.sql.Date型別。否則在轉換時會提示argument mistype異常。我把我的程式中的日期由 java.util.Date 改為 java.sql.Date 後,就沒有錯誤了。我查了一下其他的例子,發現其日期型別一般被轉為 String 型別來儲存,而在 jpetstore 中用到了 java.util.Date 型別的屬性:private Date orderDate;,我還沒空測試這個屬性是否能夠正常讀寫。不過我猜應該是不正常的。大家可以測試一下看看。

相關文章